美文网首页
寻找下一个结点

寻找下一个结点

作者: 正在努力ing | 来源:发表于2018-08-26 16:00 被阅读0次
请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继)。
给定树的根结点指针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)

相关文章

  • 寻找下一个结点

    请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继)。 给定树的根结点指针TreeNode* ro...

  • 25.二叉树的下一个结点

    按照中序排序,求二叉树的下一个结点。 分析下一个结点: (1)如果当前结点存在右结点, 那么它的下一个结点就是它的...

  • LeetCode 83 —— 删除排序链表中的重复元素

    1. 题目 2. 解答 从前向后遍历链表,如果下一个结点的值和当前结点的值相同,则删除下一个结点,否则继续向后遍历...

  • 剑指offer | 二叉树的下一个结点

    二叉树的下一个结点 给定一棵二叉树和其中一个结点,如何找出中序遍历顺序的下一个结点树中的结点除了有两个分别指向左右...

  • 数据结构-python

    链表 链表的结点内容: 数据域 指针域(存储下一个结点的地址) 操作链表时所需: ...

  • Java 数据结构 双向链表

    Java 数据结构 双向链表 基本特点 单向链表:只有指向下一个结点的引用(后驱)双向链表:既有指向下一个结点的引...

  • 008,二叉树的下一个节点

    二叉树的下一个结点 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的...

  • JZ-057-二叉树的下一个结点

    二叉树的下一个结点 题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的...

  • 寻找自然连结点

    当我读《大江大河》至杨巡套馒头至宋运辉家时,我想过,杨巡区孩这么机灵,将来要发达。那他怎么发达?他很小就辍学了,沒...

  • Redis中的链表

    链表/结点/迭代器结构体 链表迭代器 通过迭代器获取链表中下一个结点 迭代整个链表

网友评论

      本文标题:寻找下一个结点

      本文链接:https://www.haomeiwen.com/subject/sruoiftx.html