题目:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
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