劍指offer57-二叉樹的下一個結點
阿新 • • 發佈:2020-12-13
題目描述
給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。
知識點回顧
樹
程式碼
解法一:暴力迴圈
- 根據給出的結點求出整棵樹的根節點
- 根據根節點遞迴求出樹的中序遍歷,存入vector
- 在vector中查詢當前結點,則當前結點的下一結點即為所求。
# -*- 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): # write code here if not pNode: return None tmp=pNode while tmp.next: #找到樹的根節點 tmp=tmp.next a=[] self.in_search(tmp,a)#if a.index(pNode)+1<=len(a)-1: # return a[a.index(pNode)+1] #return None try: return a[a.index(pNode)+1] except: return None def in_search(self,tree,a): #注意這裡有遞迴,所以不要在函式裡定義a=[] if not tree: returnNone self.in_search(tree.left,a) a.append(tree) self.in_search(tree.right,a)
解法二:具體情況具體分析