码迷,mamicode.com
首页 > 其他好文 > 详细

给出一个二叉树的节点,返回该节点的前驱节点

时间:2020-05-24 13:47:28      阅读:50      评论:0      收藏:0      [点我收藏+]

标签:结构   mos   中序   null   节点   ==   amp   vat   private   


/**
* 给出一个二叉树的节点,返回该节点的前驱节点(中序遍历的上一个节点称为前驱节点)
* <p>
* 1)如果该节点有左子树,那么该节点的前驱节点一定是左子树上最右边的节点;
* 2)如果该节点无左子树,那么往上找;
* 3)如果该节点是父节点的右子树,那么返回该父节点;如果该节点是父节点的左子树,继续上找
* 4)重复3)直到找到该节点或找到根节点的父节点为null
*/
public class PrecursorNode {

public static Node getPrecursorNode(Node node) {
if (node == null) {
return null;
}
if (node.left != null) {
return getMostRight(node.left);
}
Node parent = node.parent;
while (parent != null && parent.left == node) {
node = parent;
parent = node.parent;
}
return parent;
}

private static Node getMostRight(Node node) {
if (node == null) {
return null;
}
while (node.right != null) {
node = node.right;
}
return node;
}

/**
* 二叉树结构
*/
public static class Node {

public int value;

public Node left;

public Node right;

public Node parent;

public Node(int value) {
this.value = value;
}

}

}

/* 如有意见或建议,欢迎评论区留言;如发现代码有误,欢迎批评指正 */

给出一个二叉树的节点,返回该节点的前驱节点

标签:结构   mos   中序   null   节点   ==   amp   vat   private   

原文地址:https://www.cnblogs.com/laydown/p/12950501.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!