1. 程式人生 > >python劍指offer系列二叉樹的下一個節點

python劍指offer系列二叉樹的下一個節點

題目:

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

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