二叉数的下一个节点
2018-03-11 17:05
232 查看
package com.niuke; /** * Created by admin on 2018/3/11. * 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。 * 注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 */ public class GetNext { //1 若该节点存在右子树:则下一个节点为右子树最左子节点 //2 若该节点不存在右子树:这时分两种情况: //(1) 该节点为父节点的左子节点,则下一个节点为其父节点 //(2) 该节点为父节点的右子节点,则沿着父节点向上遍历,直到找到一个节点的父节点的 // 左子节点为该节点,则该节点的父节点下一个节点 public TreeLinkNode getNext(TreeLinkNode pNode) { if(pNode==null) { return null; } if(pNode.right!=null) {//该节点存在右子树 pNode=pNode.right; while (pNode.left!=null) {//找到最左子节点 pNode=pNode.left; } return pNode; } else if(pNode.next!=null&&pNode.next.left==pNode) { //该节点不存在右子树,且为父节点的左子节点 return pNode.next; } else if(pNode.next!=null&&pNode.next.right==pNode) { //该节点不存在右子树,该节点为父节点的右子节点 while (pNode.next!=null&&pNode!=pNode.next.left) { pNode=pNode.next; } return pNode.next; } else {//该节点不存在右子树,该节点无父节点,为根节点 return null; } } } class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null;//指向父节点的指针 TreeLinkNode(int val) { this.val = val; } }
相关文章推荐
- 二叉树的下一个节点
- 面试题58:二叉树的下一个节点
- 剑指offer系列之56:二叉树的下一个节点
- Winform TreeView 查找下一个节点
- [CareerCup] 4.6 Find Next Node in a BST 寻找二叉搜索树中下一个节点
- python剑指offer系列二叉树的下一个节点
- activiti根据当前节点获取下一个节点信息
- 通用函数: 加载多个函数, 紧邻目标元素节点后,下一个元素节点
- 剑指offer-二叉树的下一个节点
- 二叉树的下一个节点
- 剑指offer之二叉树的下一个节点
- 剑指Offer-8:二叉树的下一个节点
- javascript获取dom的下一个节点方法
- 题目8:二叉树的下一个节点
- 13.剑指offer-二叉树的下一个节点
- 左孩子右兄弟表示多叉树查找返回下一个节点
- 二叉查找树中寻找下一个节点
- 【js版】 剑指offer【6】二叉树的下一个节点
- 使用LINUX C实现一个链表,要求:链表节点构成:姓名、分数、下一个节点指针...
- JS,nextSibling,nextElementSibling 下一个兄弟,previousSibling previousElementSibling 上一个兄弟节点