【剑指offer全集详解python版——二叉树的下一个结点】 题目描述:
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路: 1.该节点有右子树,下一个节点是右子树的最左节点
2.没有右子树的话,如果它是左子节点,则下一个节点是父节点
3.既没有右子树,其它本身是右子节点,就一直向上遍历,直到找到一个是它父节点的左子节点的节点
代码:
# -*- 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 pNode
if pNode.right:
left1=pNode.right
while left1.left:
left1=left1.left
return left1
p=pNode
while pNode.next:
tmp=pNode.next
if tmp.left==pNode:
return tmp
pNode=tmp
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- 分析COMP122 The Caesar Cipher
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 数据结构与算法|【算法】力扣第 266场周赛
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 网络|简单聊聊压缩网络