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

    题目描述

    给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
     
    思路:1.如果给定节点有右子树,那么右子树上面的最左节点就是他中序遍历的后一个节点
    2.如果一个节点是一棵树的左子树,那么他的下一个就是他的父节点
    3.如果一个节点是一棵树的右子树。 根据 一个节点左子树的最右边的节点是,根节点的上一个节点的规律。  那么如果节点是父节点的右孩子,那么看他的父亲,看他父亲如果是他父亲的父亲的右孩子,那继续往上看,直到发现某一个祖先节点是其父节点的左孩子的时候,那么,这个父节点就是要找的节点。画图易证。(终止条件是他的祖先节点没有父节点了)
     
    上代码
    /*
    public class TreeLinkNode {
        int val;
        TreeLinkNode left = null;
        TreeLinkNode right = null;
        TreeLinkNode next = null;
    
        TreeLinkNode(int val) {
            this.val = val;
        }
    }
    */
    public class Solution {
        public TreeLinkNode GetNext(TreeLinkNode pNode)
        {
            if(pNode==null){
                return null;
            }
            if(pNode.right!=null){
                TreeLinkNode right=pNode.right;
                while(right.left!=null){
                    right=right.left;
                }
                return right;
            }
            while(pNode.next!=null){
                TreeLinkNode pp=pNode.next;
                if(pp.left==pNode){
                    return pp;
                }
                pNode=pp;
            }
    
            return null;
        }
    }
     
     
  • 相关阅读:
    考试剩余时间倒计时
    MVC URL处理
    .net core 使用DES加密字符串
    JS时间处理,获取天时分秒。以及浏览器出现的不兼容问题
    NLog使用说明
    开发工具集
    js模拟下载
    DataTable导出Excel
    Ajax提交打开新窗口,浏览器拦截处理;以及跨域问题
    jquery_DOM笔记
  • 原文地址:https://www.cnblogs.com/tobemaster/p/5926771.html
Copyright © 2011-2022 走看看