LEETCODE 1104. 二叉树寻路

LEETCODE 1104. 二叉树寻路

题目描述

在一棵无限的二叉树上,每个节点都有两个子节点,树中的节点 逐行 依次按 “之” 字形进行标记。
如下图所示,在奇数行(即,第一行、第三行、第五行……)中,按从左到右的顺序进行标记;
而偶数行(即,第二行、第四行、第六行……)中,按从右到左的顺序进行标记。

给你树上某一个节点的标号 label,请你返回从根节点到该标号为 label 节点的路径,该路径是由途经的节点标号所组成的。
示例 1:
输入:label = 14
输出:[1,3,4,14]

示例 2:
输入:label = 26
输出:[1,2,6,10,26]
提示:
1 <= label <= 10^6

题目地址
中文版
英文版

 

代码实现

class Solution(object):
	def pathInZigZagTree(self, label):
		"""
		:type label: int
		:rtype: List[int]
		"""
		count = 0
		n = label
		while n>0:
			count += 1
			n >>= 1
		arr = [0] * count
		arr[count-1] = label
		for i in xrange(count-1,0,-1):
			arr[i-1] = 2**i - arr[i]/2 + 2**(i-1) -1
		return arr
                                                                   
1 次阅读

发表评论

电子邮件地址不会被公开。