1. 程式人生 > 實用技巧 >劍指offer57-二叉樹的下一個結點

劍指offer57-二叉樹的下一個結點

題目描述

給定一個二叉樹和其中的一個結點,請找出中序遍歷順序的下一個結點並且返回。注意,樹中的結點不僅包含左右子結點,同時包含指向父結點的指標。

知識點回顧

程式碼

解法一:暴力迴圈

  1. 根據給出的結點求出整棵樹的根節點
  2. 根據根節點遞迴求出樹的中序遍歷,存入vector
  3. 在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: return
None self.in_search(tree.left,a) a.append(tree) self.in_search(tree.right,a)

解法二:具體情況具體分析