zoukankan      html  css  js  c++  java
  • 剑指offer系列31-----二叉树的下一个节点

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

     1 package com.exe7.offer;
     2 
     3 /**
     4  * 【题目】给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。
     5  *            注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
     6  * @author WGS
     7  *
     8  */
     9 public class GetNextNode {
    10 
    11     public class TreeNode{
    12         int val;
    13         TreeNode left=null;
    14         TreeNode right=null;
    15         TreeNode next=null;
    16         public TreeNode(int val){
    17             this.val=val;
    18         }
    19     }
    20     
    21     
    22     public TreeNode getNextNode(TreeNode pNode){
    23         if(pNode==null) return null;
    24         //1 判断有无右子树,有就是右子树最左子节点;
    25         TreeNode curNode=null;
    26         if(pNode.right!=null){
    27             curNode=pNode.right;
    28             while(curNode.left!=null){
    29                 curNode=curNode.left;
    30             }
    31             return curNode;
    32         }
    33         //2 无右子树;
    34         else{
    35             //1) 判断该结点是否是其父节点的左结点,是,下个结点就是其父节点。
    36             if(pNode.next==null) return null;
    37             if(pNode==pNode.next.left){
    38                 return pNode.next;//返回其父节点
    39             }
    40             
    41             
    42             //2) 该结点不是父节点的左结点即是其右节点,则判断其父节点是否是父父结点的左结点;
    43             curNode=pNode.next;//该结点的父节点
    44             while(curNode.next!=null){
    45                 if(curNode==curNode.next.left){
    46                     return curNode.next;//返回其父节点的父节点
    47                 }
    48                 curNode=curNode.next;//继续回溯
    49             }
    50         }    
    51         
    52         return null;
    53         
    54     }
    55 }
  • 相关阅读:
    在Centos7下源代码安装配置Nginx
    mysql5.7.21源码安装
    数据库设计三大范式
    电商项目中使用Redis实现秒杀功能
    PHP和Redis实现在高并发下的抢购及秒杀功能示例详解
    PHP面向对象(抽象类与抽象方法、接口的实现)
    php面向对象 封装继承多态 接口、重载、抽象类、最终类总结
    利用VHD虚拟文件加密自己的个人信息
    Chrome常用快捷键
    stl本子
  • 原文地址:https://www.cnblogs.com/noaman/p/5575625.html
Copyright © 2011-2022 走看看