zoukankan      html  css  js  c++  java
  • 二叉树的下一个节点

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

     如果一个节点有右子树,那么它的下一个节点就是它的右子树中的最左子节点。即从右子节点出发一直沿着指向左子节点的指针,我们就能找到它的下一个节点

    如果一个节点没有右子树,如果节点是它父节点的左子节点,那么它的下一个节点就是它的父节点。

    如果一个节点既没有右子树,并且它还是它父节点的右子节点。我们可以沿着指向父节点的指针一直向上遍历,直到找到一个是它父节点的左子节点的节点。如果这样的节点存在,那么这个节点的父节点就是我们要找的下一个节点(以i为例,找到b,找到a)

    剑指offer代码:

    主要逻辑也同上,按照其是否有右子树,有右子树就一直往左找;如果没有右子树则不需要考虑其左子树,就开始看其是其父节点的左孩子还是右孩子,左孩子则其父节点就是其下一个节点,如果是右孩子则表示以其父节点为根的子树访问完了,继续往上,直到找到一个节点是其对应父节点的左孩子,表示这个左子树完了,所以其父节点就是下一个要访问的节点。

  • 相关阅读:
    用java批量重命名文件
    登入Tomcat Manager时出现401错误——解决方法
    bat启动/停止oracle服务
    java基本类型与字符串之间的转换
    java面向对象 要点
    理解main 方法
    第二章 变量,数据类型和运算符
    初始JAVA
    jdbcTemplate
    Aspectj
  • 原文地址:https://www.cnblogs.com/libin123/p/12770476.html
Copyright © 2011-2022 走看看