美文网首页算法与数据结构二叉树之下数据结构和算法分析
剑指Offer57 二叉树的下一个节点(深入理解遍历顺序)

剑指Offer57 二叉树的下一个节点(深入理解遍历顺序)

作者: 北国雪WRG | 来源:发表于2019-01-22 22:35 被阅读1次

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。

  1. 如果该节点存在右子树,那么下一个节点在右子树上
  2. 如果该节点不存在右子树,说明以这个节点为根节点的树被遍历完成。回溯
  3. 回溯的时候要注意两点
    • 回溯的结束的条件是当前节点不是父亲的右儿子
    • 回溯到了根节点,根节点的父亲是null
public class Solution {
    public TreeLinkNode GetNext(TreeLinkNode pNode){
        // 如果存在右子树
        if(pNode.right != null) {
            pNode = pNode.right;
            while(pNode.left != null) pNode = pNode.left;
            return pNode;
        }
        // 以该节点为根节点的子树遍历完成,回溯
        while(pNode.next !=null && pNode.next.right == pNode){
             pNode = pNode.next;
        }
        return pNode.next;
    }
}

相关文章

  • 剑指Offer57 二叉树的下一个节点(深入理解遍历顺序)

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包...

  • 二叉树的下一个节点

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

  • 二叉树操作

    树节点 逐行顺序解析二叉树 前序遍历二叉树 中序遍历二叉树 后序遍历二叉树 删除指定数值的节点 前序遍历顺序存储的...

  • 《剑指offer第二版》题8:二叉树的下一个节点

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

  • 二叉树的遍历笔记

    一、二叉树遍历的概念 二叉树的遍历(traversing tree)是指从根节点出发,按照某种特定顺序依次访问二叉...

  • 二叉树的遍历笔记

    一、二叉树遍历的概念 二叉树的遍历(traversing tree)是指从根节点出发,按照某种特定顺序依次访问二叉...

  • 剑指offer学习笔记:8.4 树

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

  • java 二叉树遍历算法

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

  • 算法与数据结构

    主要是学习剑指offer的一些总结 二叉树的三种遍历: 1、前序遍历:先访问根节点,再访问左子节点,最后访问右子节...

  • 算法:二叉树遍历类题目

    算法:二叉树遍历类题目 树的遍历顺序是依赖于 根 节点的位置,前序遍历的顺序为 根左右,中序遍历的顺序为 左根右,...

网友评论

    本文标题:剑指Offer57 二叉树的下一个节点(深入理解遍历顺序)

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