博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
二叉树——在二叉树中找到一个节点的前驱节点
阅读量:5289 次
发布时间:2019-06-14

本文共 1782 字,大约阅读时间需要 5 分钟。

可以将该结点分为两种情况,

1.没有左子树,那它是某一个结点的右子树的最左结点,然后找到这个右子树的parent即可

  找它的parent,直到当前节点是parent的右子树为止

2.有左子树,那前驱节点就是它的左子树的最右结点

 

public static Node findPreNode(Node node){        if(node == null) return null;        if(node.left == null){            Node parentNode = node.parent;            while(parentNode != null && parentNode.right != node){                node = parentNode;                parentNode = node.parent;            }            return parentNode;        } else{            node = node.left;            while(node.right != null){                node = node.right;            }            return node;        }    }

 

  

 

测试代码

 

public static void main(String[] args){        Node node = new Node(1);        node.left = new Node(2);        node.right = new Node(3);        node.left.left = new Node( 4 );        node.left.right = new Node(5);        node.right.left = new Node( 6 );        node.right.right = new Node( 7 );        node.left.left.left = new Node(11);        node.left.right.right = new Node( 8 );        node.right.left.right = new Node(9);        node.right.right.right = new Node(10);        node.parent = null;        node.left.parent = node;        node.right.parent = node;        node.left.left.parent = node.left;        node.left.right.parent = node.left;        node.right.left.parent = node.right;        node.right.right.parent = node.right;        node.left.left.left.parent = node.left.left;        node.left.right.right.parent = node.left.right;        node.right.left.right.parent = node.right.left;        node.right.right.right.parent = node.right.right;        System.out.println(findPreNode( node.left.right.right ).value);        System.out.println(findPreNode( node.right.left ).value);    }

 

  

 

转载于:https://www.cnblogs.com/SkyeAngel/p/8945528.html

你可能感兴趣的文章
PHP二维数组用某个字段的值当做键名
查看>>
Sublime Text3 安装 CTags 插件出现乱码
查看>>
php fsockopen()方法,简化,异步非阻塞调用
查看>>
FormData使用方法详解
查看>>
PHP fsockopen 异步写入文件
查看>>
h5表单亲测
查看>>
利用Redis锁解决高并发问题
查看>>
jquery里用each遍历的值存到数组和字符串
查看>>
Redis系列-第六篇哨兵模式
查看>>
jQuery Validate验证框架详解,提交前验证
查看>>
HTML5-表单 自带验证
查看>>
标准mysql(x64) Windows版安装过程
查看>>
div布局,左边宽度固定,右边自适应
查看>>
[Vue warn]: Duplicate keys detected: 'area'. This may cause an update error.
查看>>
算法 【第一章】算法基础
查看>>
{点点滴滴}DOM的Form对象
查看>>
数据库简介
查看>>
随笔摘要 - 短 精
查看>>
第二次作业(WordCount)重制版
查看>>
vim 学习
查看>>