python劍指offer系列二叉樹的下一個節點
阿新 • • 發佈:2019-01-07
題目:
給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
solution
思路:
第一步還是找到某個節點的根節點,方法是一直使用next判斷即可。
再將從根節點中序遍歷的結果儲存到一個數組中,直接找pNode所在索引的下一個即可。當然要考慮這個節點是不是最後一個,如果是最後一個,直接返回None。
程式碼:
# -*- coding:utf-8 -*- # class TreeLinkNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None # self.next = None class Solution: def GetNext(self, pNode): if not pNode: return pRoot = pNode tmp = pNode while pNode: if pNode.next == None: break pRoot = pNode.next pNode = pNode.next self.arr = [] self.midTrave(pRoot) for i in range(len(self.arr)): if self.arr[i] == tmp: if i <=len(self.arr) - 2: return self.arr[i+1] else: return def midTrave(self,pRoot): if not pRoot :return self.midTrave(pRoot.left) self.arr.append(pRoot) self.midTrave(pRoot.right) # write code here