二叉树的下一个节点
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
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
答案:
# -*- 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
相关文章推荐
- 剑指offer(二叉树的下一个节点)
- 剑指offer 第八题 二叉树的下一个节点
- 剑指Offer面试题58:二叉树的下一个节点
- 二叉树的下一个节点
- 剑指offer之二叉树的下一个节点
- 58 - 二叉树的中序遍历的下一个节点
- 《剑指offer》8.二叉树的下一个节点
- 找二叉树中指定节点在中序遍历中的下一个节点
- python 重建二叉树与二叉树下一个节点
- 剑指Offer(第二版)面试题8:二叉树的下一个节点
- <剑指offer 面试题8>二叉树的下一个节点(Java)
- 二叉树的下一个节点
- 跟进问题“在每个节点中填充下一个正确的指针”。层次遍历二叉树
- 二叉树 给定一个节点,求中序遍历下一个节点
- 题目8:二叉树的下一个节点
- 《剑指offer》二叉树的下一个节点
- 二叉树的下一个节点
- 剑指offer 58 - 二叉树的下一个节点
- 剑指offer(60):二叉树的下一个节点
- 《程序员面试金典》--寻找二叉树中某个节点中序遍历的下一个节点