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 }
  • 相关阅读:
    Word Break
    Binary Tree Right Side View
    41. First Missing Positive
    2 Sum ,3 Sum, 3 Sum close
    216. Combination Sum III
    190. Reverse Bits
    143. Reorder List
    142. Linked List Cycle II
    Single Number i,ii,iii
    62. Unique Paths i & ii
  • 原文地址:https://www.cnblogs.com/noaman/p/5575625.html
Copyright © 2011-2022 走看看