您的位置:首页 > 编程语言 > Python开发

二叉树的下一个节点

2017-11-17 10:19 190 查看
题目描述:

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

答案:

# -*- coding:utf-8 -*-
# class TreeLinkNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# self.next = None
# self.next是指向父结点
class Solution:
def GetNext(self, pNode):
# write code here
# 1、结点为空时,返回空值
if not pNode:
return pNode
# 2、结点有右孩子存在,则设置一个指针从右孩子出发,一直
# 沿着左子结点的方向的叶子节点即为下一个结点
if pNode.right:
leftNode=pNode.right
while leftNode.left:
leftNode=leftNode.left
return leftNode
# 3、结点不是根节点,如果该节点是其父结点的左孩子,则返回父结点
# 否则继续向上遍历其父结点的父结点,重复之前的判断,返回父结点。
p=pNode
while p.next:
tmp=p.next
if tmp.left==p:
return tmp
p=tmp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 二叉树