题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路1:窒息了,对树进行了一波分析,思路是对的,但是代码怎么敲测试用例都没全过。真的是,回过头来这个要再练练。
Python题解:
# -*- 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
if pNode.right:#如果节点的右子树不为空
r1=pNode.right
while r1.left:
r1=r1.left
return r1
while pNode.next: #节点的右子树为空
tmp=pNode.next
if tmp.left==pNode:
return tmp
pNode=tmp
return None #节点为单一根节点
思路2:先根据树写出中序遍历结果,再对遍历结果进行一遍查找,找到给定节点的下一个节点。(待填坑)
记录问题:(分析一下两种方法的时间复杂度)