寻找下一个结点

请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继)。
给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值。保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继返回-1。

方法一:

中序遍历,利用信号变量,保存下一个节点值
class Successor:
    def findSucc(self, root, p):

        # write code here
        self.status = False
        self.res = -1
        self.checkit(root,p)

        return self.res

    def checkit(self,root,p):
        if not root:
            return
        self.checkit(root.left,p)
        if self.status:
            self.res = root.val
            self.status = False
            return
        if root.val==p:
            self.status = True

        self.checkit(root.right,p)  
        


方法二:

利用辅助数组,把全体节点值存储在数组中


class Successor:
    def findSucc(self, root, p):
        # write code here
        self.arr = []
        self.dfs(root)
        return self.arr[self.arr.index(p) + 1]
 
    def dfs(self, root):
        if not root:
            return
        self.dfs(root.left)
        self.arr.append(root.val)
        self.dfs(root.right)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,747评论 0 16
  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 11,402评论 0 13
  • 生怕错过你的微信电话,你喜欢熬夜,我上班,所以为了你不关机,每天早上睡醒第一件事情就是拿起手机很期待的看看有...
    魏雨烟阅读 1,643评论 0 0
  • 不知何时起,自己喜欢看书,喜欢阅读美好的文章,中学时期就很喜欢看《读者》一书,每当看到这本书的时候都会看的很入神,...
    溫暖的黃小廚阅读 1,409评论 2 5
  • 晴冷晴冷的天气,万里无云。路边的树虽然毫无生机,却也很有冬天的味道。 从平泉道出发到吴家窑二号街,抵达和平图书馆,...
    一条岸边的鱼阅读 2,880评论 0 0

友情链接更多精彩内容