美文网首页二叉树
【剑指 offer】- 二叉树的下一个结点(中序)

【剑指 offer】- 二叉树的下一个结点(中序)

作者: 邓泽军_3679 | 来源:发表于2019-04-06 11:22 被阅读0次

1、题目描述

给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。

注意:

如果给定的节点是中序遍历序列的最后一个,则返回空节点;
二叉树一定不为空,且给定的节点一定不是空节点;
样例
假定二叉树是:[2, 1, 3, null, null, null, null], 给出的是值等于2的节点。

则应返回值等于3的节点。

解释:该二叉树的结构如下,2的后继节点是3。
  2
 / \
1 3

2、问题描述:

  • 给一个二叉树的一个结点, 找到二叉树中序遍历的下一个结点。**

3、问题关键:

  • 1。如果当前结点有右儿子,那么右子树的最左侧结点就是后继。
  • 2。如果当前结点没有右儿子,那么向上查找,直到当前结点是他爸爸的左儿子,那么它爸爸就是后继。

4、C++代码:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode *father;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL), father(NULL) {}
 * };
 */
class Solution {
public:
    TreeNode* inorderSuccessor(TreeNode* p) {
        if(p->right) {//有右儿子,那么右子树最左侧的就是后继。
            p = p->right;
            while(p->left) p = p->left;
            return p;
        }
        while(p->father && p == p->father->right) p = p->father;//一直找到它不是它爸爸的右儿子,或者找到根结点了。
        return p->father;
    }
};

相关文章

  • 数据结构算法(七) 之 树的 2 道面试题 58 & 5

    剑指 Offer 面试题 58(Java 版):二叉树的下一结点(中序遍历) 题目:给定一棵二叉树和其中的一个结点...

  • 剑指offer二刷2

    删除链表中重复的结点 我的: 剑指:方法3,4一样 二叉树的下一个结点 我的: PS:方法2:思路:首先知道中序遍...

  • 二叉树的下一个节点

    《剑指offer》面试题8:二叉树的下一个节点 题目:给定一颗二叉树和其中的一个节点,如何找出中序遍历序列的下一个...

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

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

  • go 重建二叉树

    这是剑指offer的一道题。 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍...

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

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

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

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

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

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

  • 剑指Offer(四)

    剑指Offer(四) 重建二叉树 题目描述: 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的...

  • 【剑指 offer】- 二叉树的下一个结点(中序)

    1、题目描述 给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。 注意: 如果给定的节点是中序遍历序列...

网友评论

    本文标题:【剑指 offer】- 二叉树的下一个结点(中序)

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