二叉树的下一个节点(再重做)

image.png

分三步进行思考:

  1. 当前节点有右子树,那么下一个节点是右子树里面的最左边的那个
    2.如果当前节点没有右子树,但是当前节点是父节点的左节点,那么下一个节点就是父节点
    3.如果当前节点没有右子树,且是父节点的右节点,则一直向上追溯,直到某个祖先是其父节点的左孩子,那个返回这个祖先的父节点。如果一直到根都没有,则返回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):
        # write code here
        if pNode is None:
            return None
        if pNode.right:
            p = pNode.right
            while p.left:
                p = p.left
            return p
        else:
            if not pNode.next:
                return None
            if pNode.next.left == pNode:
                return pNode.next
            else:
                p = pNode
                while p.next:
                    if p.next.left == p:
                        return p.next
                    p = p.next
                return None
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 树的概述 树是一种非常常用的数据结构,树与前面介绍的线性表,栈,队列等线性结构不同,树是一种非线性结构 1.树的定...
    Jack921阅读 10,059评论 1 31
  • 一、前言 本文诣在帮助像博主这样没有基础的同学更好地理解二叉搜索树中前驱节点的求法,以及为什么这么求就可以,高手童...
    我的小白大人阅读 6,220评论 0 0
  • 什么是二叉树? 引用自百度百科:在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(...
    AnICoo1阅读 5,238评论 0 1
  • 记忆躺在身体里 犹如重症病人微弱的心跳 强烈的电击唤回遥远的残念 半夜坐车往机场接人 音响在放满大街都是的薛之谦 ...
    南逢酒馆阅读 1,873评论 0 0
  • 遇见你那天。 可能是春分 白昼变得漫长 黑夜变得短促
    wildK阅读 1,553评论 0 0

友情链接更多精彩内容