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

用两个栈实现队列

http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6

树结构的遍历算法,注意回顾中序遍历等一些操作。解答这种题目的一些小经验

需要注意的事情有

1.了解定义的数据结构的各个元素值

2.熟悉各种递归调用结构,左右子树的递归调用算法流程

3.进行递归的分析过程

4.完成代码的相关编写过程

分析完成后,注意各种不满足题意的情况,返回相应的数值即可

# -*- coding:utf-8 -*-
# class TreeLinkNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#         self.next = None
class Solution:
    def __init__(self):
        node = []
        self.node = node  # 构架函数,定义一个全局变量
    def GetNext(self, pNode):
        # write code here,注意观察相应树的结构
        root = pNode
        while root.next:  # 下一个根节点还有的话
            root = root.next
        # 调用中序遍历函数,将数据进行遍历
        self.right_order(root)
        # 得到了相应的中序遍历的结果
        for i in range(len(self.node)-1):
            # 当前节点为
            cur = self.node[i]
            if pNode==cur:
                return self.node[i+1]
        # 其他的情况
        return None
        
        # 构造中序遍历的方法
    def right_order(self, root):
        if root==None:
            return
        # 左根右的次序将中序遍历结果
        self.right_order(root.left)
        self.node.append(root)  # 按顺序加入相应的根节点
        self.right_order(root.right)
            

完成相关的中序遍历代码编写

还需要编写相关的第二种方法,不返回中序遍历的结果,直接将相关的数据进行查找操作, 分三种情况进行讨论

全部评论

相关推荐

每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
05-29 22:11
门头沟学院 Java
Elastic90:抛开学历造假不谈,这公司的招聘需求也挺怪的,Java开发还要求你有图文识别、移动端开发和c++的经验,有点逆天了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务