博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
剑指Offer——二叉树的下一个节点
阅读量:4585 次
发布时间:2019-06-09

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

1、题目描述

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

2、代码实现

/*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;        }        //1、如果一个节点有右子树那么它的下一个节点就是它的右子树中的最左节点。        if (pNode.right != null) {            TreeLinkNode node = pNode.right;            while (node.left != null) {                node = node.left;            }            return node;        }        //2、如果节点是它父节点的左子节点,那么它的下一个节点就是它的父节点        //3、如果一个节点既没有右子树,而且它还是它父节点的右子节点,我们可以沿着指向父节点的指针一直向上        //遍历,直到找到一个是它父节点的左子节点的节点,如果这个节点存在的话,那么这个节点的父节点就是        //我们要找的下一个节点        while (pNode.next != null) {            if (pNode.next.left == pNode) {                return pNode.next;            }            pNode = pNode.next;        }        return null;    }}

  

转载于:https://www.cnblogs.com/BaoZiY/p/11183597.html

你可能感兴趣的文章
赋值文件
查看>>
Vue 数组 字典 template v-for 的使用
查看>>
蓝牙模块选择经验谈
查看>>
PAT 1060 爱丁顿数(25)(STL-multiset+思路)
查看>>
进程和线程
查看>>
爬取校花网视频
查看>>
mysql root密码忘记最快方法
查看>>
imagemagick imagick
查看>>
DevOps - 版本控制 - Gitlab
查看>>
代码管理必备-----git使用上传码云
查看>>
静态库Lib和动态库Dll
查看>>
获取日k数据
查看>>
【LOJ】 #2132. 「NOI2015」荷马史诗
查看>>
策略模式
查看>>
DirectX11 With Windows SDK--11 混合状态
查看>>
BZOJ2982: combination Lucas模板
查看>>
UVa 10723 Cyborg Genes(LCS变种)
查看>>
Jmeter参数化
查看>>
Linux用iso镜像制作本地yum源
查看>>
在SSH项目中Struts2、Spring、Hibernate分别起到什么作用?
查看>>