美文网首页
面试题8:二叉树中序遍历的下一个节点

面试题8:二叉树中序遍历的下一个节点

作者: 繁星追逐 | 来源:发表于2019-08-11 13:21 被阅读0次

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
思路:二叉树中序遍历的下一个节点一般分为三种情况:
1.如果当前节点存在右子树,则中序遍历的下一个节点为右子树或者右子树的最左子节点。
2.如果当前节点不存在右子树,并且其是父节点的左子树,则中序遍历的下一个节点是父节点
3.入股当前节点既不存在左子树,并且其是父节点的右子树,则中序遍历的下一个节点是向上遍历到是它父子节点的左子树的节点。
代码如下:

private class TreeLinkNode{
        int val;
        TreeLinkNode left;
        TreeLinkNode right;
        TreeLinkNode next;
        public TreeLinkNode(int val){
            this.val = val;
        }
    }
public TreeLinkNode GetNext1(TreeLinkNode pNode) {
         //如果当前节点存在右子节点,则中序下一个节点为右子树最左下的节点,如果右子树没有左子结点就返回右子树根结点
        if (pNode.right != null){
            pNode = pNode.right;
            while (pNode.left != null){
                pNode = pNode.left;
            }
            return pNode;
        }

        //如果不存在右子节点,则回到父节点中判断,如果父节点的右子树为该节点,则继续寻找父节点
        while (pNode.next != null && pNode == pNode.next.right){
            pNode = pNode.next;
        }
        //若该节点为父节点的左孩子,则下一个中序节点就是父节点

        return pNode.next;
    }

相关文章

  • 面试题8:二叉树的下一个节点

    面试题8:二叉树的下一个节点 题意:给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。树中节点还有一个...

  • 二叉树的下一个节点

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

  • 剑指offer学习笔记:8.4 树

    面试题58:二叉树的下一个节点给定一个二叉树和其中一个节点,如何找到中序遍历顺序的下一个节点?树中的节点除了有两个...

  • 面试题

    面试题 二叉树 非递归实现二叉树遍历 节点: 前序遍历 中序遍历 后序遍历 排序 快速排序 其他问题 算法题 给一...

  • java 二叉树遍历算法

    二叉树的遍历可以分为先序、中序、后序、层次遍历。 前序遍历,遍历节点的顺序为:根—>左—>右;中序遍历,遍历节点的...

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

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

  • 二叉树

    1、二叉树的遍历(递归思想) 中序遍历: 【左子树,节点,右子树】后序遍历: 【左子树,右子树,节点】中序遍历: ...

  • Java实现二叉搜索树的插入、删除

    前置知识 二叉树的结构 中序遍历 中序遍历:对于每一个节点,遍历顺序是:左子树->当前节点->右子树 中序遍历得到...

  • 中序建立线索二叉树

    为什么使用中序遍历来建立线索二叉树? 因为中序遍历方便寻找前驱节点和后继节点,而先序遍历不方便找后继节点,后序遍历...

  • 数据结构复习(JavaScript)

    一、二叉树 1.1 二叉树遍历 中序遍历、前序遍历、后序遍历(根据根节点遍历次序划分)中序遍历: 1.2 重建二叉...

网友评论

      本文标题:面试题8:二叉树中序遍历的下一个节点

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