博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树的下一个结点
阅读量:5242 次
发布时间:2019-06-14

本文共 1125 字,大约阅读时间需要 3 分钟。

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。

* 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针

首先,二叉树的定义是:

class TreeLinkNode {
//二叉树的初始化 int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null;//这里的next其实是指向当前节点的父节点的(在中序遍历的情况下) TreeLinkNode(int val) { this.val = val; }}

题目分析:分析二叉树的下一个节点,一共有以下情况:

1.二叉树为空,则返回空;
2.节点右孩子存在,则设置一个指针从该节点的右孩子出发,一直沿着指向左子结点的指针找到的叶子节点即为下一个节点;
3.节点不是根节点。如果该节点是其父节点的左孩子,则返回父节点;否则继续向上遍历其父节点的父节点,重复之前的判断,
返回结果。

解法一:

public TreeLinkNode GetNext(TreeLinkNode pNode){        //中序遍历的顺序式左---根---右,这里所谓的父节点的寻找方法就是,当前节点的下一个节点。        if(pNode==null) return null;//1.根节点为null        if(pNode.right!=null){
//2.此时pNode代表的是根节点 pNode=pNode.right; while(pNode.left!=null) pNode=pNode.left; return pNode; } while(pNode.next!=null){
//3.非根节点 TreeLinkNode proot=pNode.next; if(proot.left==pNode)//如果该节点是其父节点的左孩子,则返回父节点 return proot; pNode=pNode.next; } return null; }

 

转载于:https://www.cnblogs.com/tjuxqcui/p/5540064.html

你可能感兴趣的文章
java 得到以后的日期
查看>>
[Kaggle] Sentiment Analysis on Movie Reviews
查看>>
python安装easy_intall和pip
查看>>
HDU1004
查看>>
MySQL高速缓存
查看>>
DropdownList绑定的两种方法
查看>>
价值观
查看>>
数值计算中,浮点类型给我们挖的坑
查看>>
(String)、toString、String.valueOf
查看>>
mongodb命令----批量更改文档字段名
查看>>
python多线程下载网页图片并保存至特定目录
查看>>
《人工智能的未来》--------------经典语录
查看>>
了解循环队列的实现
查看>>
CentOS 简单命令
查看>>
Linux中修改docker镜像源及安装docker
查看>>
数位dp(模板+例题)
查看>>
javascript中强制类型转换
查看>>
python学习笔记
查看>>
php+ajax(jquery)的文件异步上传
查看>>
使用 SharedPreferences 分类: Andro...
查看>>