剑指offer面试题58 二叉树的下一个节点(Java实现)
来源:互联网 发布:wifi网络电话软件 编辑:程序博客网 时间:2024/05/20 23:59
解题思路:
1.如果一个节点有右子树,那么他的下一个节点就是它的右子树中的最左子节点。
2.如果一个节点没有右子树,并且该节点是它父节点的左子节点,那么它的下一个节点就是它的父节点。
3.如果一个节点没有右子树,并且该节点是它父节点的右子节点,需要沿着指向父节点的指针一直向上遍历,直到找到一个是它父节点的左子节点的节点。
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 nextNode = null; //如果一个节点有右子树,那么他的下一个节点就是他的右子树中的最左子节点 if (pNode.right != null) { TreeLinkNode tempNode = pNode.right; while (tempNode.left != null) { tempNode = tempNode.left; } //循环结束后temp指向pNode右子树的最左子节点 return tempNode; } //获取父节点 TreeLinkNode next = pNode.next; if (pNode.right == null && next != null) { if (next.left == pNode) {//如果一个节点没有右子树,并且它是父节点的左子节点,那么他的下一个节点就是他的父节点 TreeLinkNode temp = pNode.next; return temp; } if (next.right == pNode) {//如果一个节点没有右子树,并且它是父节点的右子节点,则沿着指向父节点的指针一直向上遍历 //直到找到一个节点,他的父节点的左子节点是它 TreeLinkNode parent = pNode.next; while (parent.next != null) { TreeLinkNode nextParent = parent.next; if (nextParent.left == parent) { return nextParent; } else { parent = parent.next; } } //若循环结束,则证明未找到下一个节点,返回null; nextNode = null; } } return nextNode; }}
阅读全文
0 0
- 剑指offer面试题58 二叉树的下一个节点(Java实现)
- 剑指Offer面试题58:二叉树的下一个节点
- 【剑指offer】面试题 8:二叉树的下一个节点
- 【剑指offer】面试题8:二叉树的下一个节点
- 剑指Offer(第二版)面试题8:二叉树的下一个节点
- 剑指offer-面试题58:二叉树的下一个结点
- 剑指offer--面试题58:二叉树的下一个结点
- 剑指offer-面试题58-二叉树的下一个结点
- 剑指offer 面试题58 二叉树的下一个结点
- 【剑指Offer】面试题58:二叉树的下一个结点
- 剑指offer面试题[58]-二叉树的下一个结点
- 剑指offer面试题[58]-二叉树的下一个结点
- 剑指offer--面试题8:二叉树的下一个结点
- 剑指offer面试题63:二叉搜索树的第k个节点 Java实现
- 面试题58:二叉树的下一个节点
- [剑指offer]面试题58:二叉树中的下一个结点
- 剑指Offer--二叉树的下一个节点
- 《剑指offer》二叉树的下一个节点
- R︱Yandex的梯度提升CatBoost 算法(官方述:超越XGBoost/lightGBM/h2o)
- java生成验证码工具类
- SpEl表达式
- linux中shell截取字符串方法总结
- [存档]MSSQL分页
- 剑指offer面试题58 二叉树的下一个节点(Java实现)
- Hadoop在安装过程中的hosts的配置
- Android View
- HDU 1233 还是畅通工程【最小生成树】
- 首篇-杂谈
- Linux嵌入式内核编译过程
- MapReduce数据筛选
- Android“一万种”获取屏幕分辨率的方法以及px、dp转换
- 图标生成网站(Android IOS Windows Phone等)