4.6 找出二叉树中指定节点的下一个节点(中序后继),假定每个节点有父指针。
2014-08-21 00:28
399 查看
5 / \ 2 6 / \ \ 1 4 7 / 3 class Node{ Node left; Node right; Node parent; int val; } /** 1.如果有右子树,则结果为右子树的最左节点。 2.如果没有右子树,则需要回到父节点,如果当前节点是父节点的左子树,则父节点就是结果,如果不是继续向上再找父节点。 */ public TreeNode inorderSucc(TreeNode n){ if(n==null) return null; if(n.right!=null) return leftMost(n.right); TreeNode child = n; TreeNode par =child.parent; while(par!=null&&par.right==child){ child=par; par=par.parent; } return par; } private TreeNode leftMost(TreeNode n){ if(n==null) return null; while(n.left!=null) n=n.left; return n; }
相关文章推荐
- 找出二叉树中指定结点的下一个结点(中序后继)可以假定每个结点都有指向父节点的连接
- 设计一个算法,找出二叉查找树中指定结点的“下一个“结点(也即中序后继)。可以假定每个结点都含有指向父结点的连接。
- 找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
- 跟进问题“在每个节点中填充下一个正确的指针”。层次遍历二叉树
- 【二叉树的递归】06填充每个节点中的下一个正确的指针【Populating Next Right Pointers in Each Node】
- 找出二叉查找树中指定结点的”下一个"结点(也即中序后继)
- 给出二叉树,将二叉树进行中序线索化,在根据中序线索化二叉树,找出给定节点的前序后继节点,和给出节点的后序后继节点
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head
- 找二叉树中指定节点在中序遍历中的下一个节点
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 二叉树的下一个节点(中序)
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。
- 程序员面试金典: 9.4树与图 4.6找出二叉查找树指定结点的下一个结点
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 有一个特殊的链表,其中每个节点不但有指向下一个节点的指针pNext,还有一个指向链表中任意节点的指针pRand,如何拷贝这个特殊链表?
- 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。
- 给定一棵二叉树,二叉树每个节点的值唯一,从根节点开始找出路径上的所有节点的节点值之和等于规定值的路径
- 二叉树寻找中序遍历的后继节点
- 有父节点二叉树找中序遍历后继节点