【算法】求二叉树的下一个结点
来源:互联网 发布:c语言还是p语言好 编辑:程序博客网 时间:2024/04/29 18:23
题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
三种情况:
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 l=pNode.right.left; TreeLinkNode parent=pNode.right; while(l!=null){ parent=l; l=l.left; } return parent; } while(pNode.next!=null){ TreeLinkNode p=pNode.next; if(p.left==pNode)//如果是父节点的左孩子,返回父节点 { return p; } else pNode=pNode.next; } return null; }}
阅读全文
0 0
- 【算法】求二叉树的下一个结点
- 40.求二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- 二叉树的下一个结点
- Java的枚举类型
- 使用git托管项目
- golang 切片
- Java NIO系列教程(3) :Buffer
- Intellij IDEA调试功能使用总结
- 【算法】求二叉树的下一个结点
- git教程
- 有环单链表相交判断、单链表相交判断
- linux查看系统和cpu信息
- 2.HTTP中get和post的区别
- 你动过删网站源代码的念头吗?
- 年度总结-Grow up!
- 看完这篇,你就懂了Android的消息机制,整理思路,让我们开始吧
- MSTP基本概念