剑指offer--二叉树的下一个结点
来源:互联网 发布:html标签保存到数据库 编辑:程序博客网 时间:2024/05/01 09:59
题目描述
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
public static class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.val = val; }}TreeLinkNode GetNext(TreeLinkNode pNode){if(pNode==null) return null;if(pNode.next==null){//如果是根节点,查找右子树的最左节点(如果存在)if(pNode.right==null) return null;pNode = pNode.right;while(pNode.left!=null) pNode=pNode.left;return pNode;}else if(pNode.next.left==pNode){//如果是父节点的左节点,当其右节点不存在时,返回父节点;否则返回右子树最左节点if(pNode.right==null) return pNode.next;pNode = pNode.right;while(pNode.left!=null) pNode=pNode.left;return pNode;}else if(pNode.next.right==pNode){//如果是父节点的右节点,当其右节点存在,返回右节点;否则返回最非右父节点之父(如果过程循环到根节点,返回空)if(pNode.right!=null) return pNode.right;while(pNode.next!=null && pNode.next.right==pNode) pNode=pNode.next;if(pNode.next==null) return null;return pNode.next;}return null;}
0 0
- 剑指offer--二叉树的下一个结点
- 《剑指offer》二叉树的下一个结点
- 《剑指offer》-- 二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- [剑指offer]二叉树的下一个结点
- 剑指offer-二叉树的下一个结点
- 《剑指offer》二叉树的下一个结点
- 剑指offer: 二叉树的下一个结点
- 剑指offer 二叉树的下一个结点
- 剑指offer-二叉树的下一个结点
- 【剑指offer】二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer--二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer:二叉树的下一个结点
- 剑指offer 二叉树的下一个结点
- Linux C 错误处理 warning: incompatible implicit declaration of built-in function ‘exit’
- hdu1671 字典树
- 课表图片
- C++ 前置操作符与后置操作符
- xml解析和序列化
- 剑指offer--二叉树的下一个结点
- 完整Debian7配置LAMP(Apache/MySQL/PHP)环境及搭建建站
- Linux中fork()函数详解
- Spring2+Strutrs2+Hibernate3整合过程总结
- 信号
- 音效的播放
- static_cast, dynamic_cast, const_cast学习和探讨
- Hdoj 1213 How Many Tables 【并查集】
- 调用函数的冒泡排序法