面试题58:二叉树的下一个结点
来源:互联网 发布:巨人网络a股上市 编辑:程序博客网 时间:2024/06/04 20:05
图见书
思路:
(1) 若该节点存在右子树:则下一个节点为右子树最左子节点(如图节点 B )
(2) 若该节点不存在右子树:这时分两种情况:
2.1 该节点为父节点的左子节点,则下一个节点为其父节点(如图节点 D )
2.2 该节点为父节点的右子节点,则沿着父节点向上遍历,知道找到一个节点的父节点的左子节点为该节点,则该节点的父节点下一个节点(如图节点 I ,沿着父节点一直向上查找找到 B ( B 为其父节点的左子节点),则 B 的父节点 A 为下一个节点)。
/*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; TreeLinkNode next=null; if(pNode.right!=null){//节点有右子树 TreeLinkNode temp=pNode.right; while(temp.left!=null){ temp=temp.left; } next=temp; }else if(pNode.next!=null){//结点有父结点 TreeLinkNode cur=pNode;//par指parent父结点 TreeLinkNode par=cur.next; while(par!=null&&par.right==cur){//有父结点,并且该结点为其父结点的右子树 cur=par; par=par.next; } next=par; } return next; }}
阅读全文
0 0
- 面试题58:二叉树的下一个结点
- 剑指offer-面试题58:二叉树的下一个结点
- 剑指offer--面试题58:二叉树的下一个结点
- 面试题58-二叉树的下一个结点
- 剑指offer-面试题58-二叉树的下一个结点
- 剑指offer 面试题58 二叉树的下一个结点
- 面试题58:二叉树的下一个结点
- 【剑指Offer】面试题58:二叉树的下一个结点
- 剑指offer面试题[58]-二叉树的下一个结点
- 面试题58:二叉树的下一个结点
- 剑指offer面试题[58]-二叉树的下一个结点
- 面试题65:二叉树的下一个结点
- 剑指offer--面试题8:二叉树的下一个结点
- 面试题58:二叉树中的下一个结点
- [剑指offer]面试题58:二叉树中的下一个结点
- 《剑指Offer》学习笔记--面试题58:二叉树的下一个结点
- 【剑指Offer学习】【面试题58:二叉树的下一个结点】
- 剑指offer——面试题58:二叉树的下一个结点
- PHP实现生成word文档
- Log4J入门教程(一) 入门例程
- Wi-Fi CSI的那些事(一)
- 图的邻接表表示法
- jboss小结
- 面试题58:二叉树的下一个结点
- Zookeeper源码解析——快速选举流程
- 可重入函数
- java.lang.Object.clone()分析
- react-native之打包apk时报错
- bzoj4726 [POI2017]Sabota 二分+暴力
- linux的目录管理
- 野狗云API之详解(分页,查询,删除,更新)-yellowcong
- Android使用友盟集成QQ、微信、微博等第三方分享