题解 | #二叉树的下一个结点#

二叉树的下一个结点

http://www.nowcoder.com/practice/9023a0c988684a53960365b889ceaf5e

# -*- coding:utf-8 -*-
#discuss according to different cases
# 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
        #1-if pNone==None
        if pNode==None:
            print("null")
            return None
        #2-if pNone is not final leaf node:
        if pNode.right !=None:
            pNode=pNode.right
            while pNode.left != None:
                pNode=pNode.left
            return pNode
        elif pNode.next!=None:
            if pNode==pNode.next.left:
                return pNode.next
            elif pNode==pNode.next.right:
                pNode=pNode.next
                if pNode.next==None:
                    return None
                while pNode!=pNode.next.left:
                    pNode=pNode.next
                    if pNode.next==None:
                        return None
                return pNode.next
#                 print("null")
                return None
                
#         print("null")
#         return None


这道题思路很简单,就是分情况讨论:
1) 若节点有右子节点/右子树时,它的下一个节点是右子树的叶子左节点;
2)若节点无右子树时--->判断它是左节点还是右节点:是左节点(即pNode==pNode.next.left),下一个节点为它的父节点; 不是左节点(则是右节点),则要沿着指针向上不断找父节点,直到这个大子树的根节点,即pNode==pNode.next.left

考虑边界测例:
节点为None时,返回None;
节点是整个树最后一个右叶子节点时,返回None
该树只有一个节点时(即pNode.next==None),返回None

全部评论

相关推荐

01-30 09:45
燕山大学 Java
喵_coding:这种直接跑就完事了 哪有毕业了才签合同 任何offer和三方都没有的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
13730次浏览 132人参与
# AI面会问哪些问题? #
813次浏览 19人参与
# MiniMax求职进展汇总 #
24614次浏览 313人参与
# 你的实习产出是真实的还是包装的? #
2431次浏览 47人参与
# AI时代,哪个岗位还有“活路” #
2495次浏览 49人参与
# 长得好看会提高面试通过率吗? #
2446次浏览 39人参与
# 巨人网络春招 #
11461次浏览 224人参与
# 你做过最难的笔试是哪家公司 #
1020次浏览 18人参与
# HR最不可信的一句话是__ #
914次浏览 31人参与
# 沪漂/北漂你觉得哪个更苦? #
908次浏览 29人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7898次浏览 43人参与
# XX请雇我工作 #
51120次浏览 171人参与
# 简历中的项目经历要怎么写? #
310766次浏览 4252人参与
# 简历第一个项目做什么 #
31981次浏览 354人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152726次浏览 888人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187486次浏览 1123人参与
# AI时代,哪些岗位最容易被淘汰 #
64398次浏览 857人参与
# 如果重来一次你还会读研吗 #
229937次浏览 2011人参与
# 正在春招的你,也参与了去年秋招吗? #
364032次浏览 2640人参与
# 腾讯音乐求职进展汇总 #
160794次浏览 1114人参与
# 你怎么看待AI面试 #
180527次浏览 1287人参与
# 投格力的你,拿到offer了吗? #
178044次浏览 889人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务