线索化二叉树-实现中序遍历和查找前驱后继节点

一、线索化二叉树简介

1.线索二叉树:对于n个节点的二叉树,在二叉链存储结构中有n+1个空链域,利用这些空链域存放在某种遍历次序下该节点的前驱节点和后继节点的指针,这些指针称为线索,加上线索的二叉树称为线索二叉树

2.线索二叉树分类:这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树。根据线索性质的不同,线索二叉树可分为前序线索二叉树中序线索二叉树后序线索二叉树三种。

3.前驱结点:一个结点的前一个结点

4. 后继结点:一个结点的后一个结点

二、中序线索化二叉树逻辑结构示意图

在这里插入图片描述
说明:当线索化二叉树后,Node节点的属性left和right,有如下情况:

  1. left 指向的是左子树,也可能是指向的前驱节点。比如8节点left指向的左子树,而9节点的left指向的就是前驱节点2.
  2. right指向的是右子树, 也可能是指向后继节点.比如8节点right指向的是右子树,而节点的9的right指向的是后继节点8.

三、代码实现

1.查找前驱节点和后继节点
2.中序线索化遍历二叉树

package ThreadedBinaryTree;

public class ThreadedBinaryTreeTest {
   
    public static void main(String[] args){
   
        //创建节点对象
        Node root8 = new Node(8);
        Node data2 = new Node(2);
        Node data6 = new Node(6);
        Node data3 = new Node(3);
        Node data9 = new Node(9);
        Node data5 = new Node(5);
        Node data1 = new Node(1);

        //创建一个线索化二叉树
        ThreadedBinaryTree tree =new ThreadedBinaryTree();
        tree.setRoot(root8);
        root8.setLeftNode(data2);
        root8.setRightNode<
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值