线索化二叉树的建立与遍历

线索化二叉树

基本介绍

1)具有n个节点的二叉链表中有(2n - (n - 1))= n + 1 个空指针域,利用空指针域存放指向该节点某种遍历次序下的前驱结点和后继节点的指针,这种附加的指针称为线索

2)这种加入了线索的二叉链表叫做线索链表,相应的二叉树叫做线索二叉树(Threaded BinaryTree)。线索二叉树根据遍历的顺序可以分为三种:
前序搜索二叉树、中序搜索二叉树、后序搜索二叉树。

3)一个节点的前一个节点,成为前驱结点。

4)一个节点的后一个节点,成为后继节点。

代码实现

为了区分当前节点的左(右)指针指向的到底是左(右)子树还是前驱(后继)节点,引入两个整型属性:leftType 与 rightType,规定等于0时代表指向子树,等于1时代表线索。

建立节点实现类
class TreeNode{
   
    private int val;
    TreeNode right;
    TreeNode left;
    int LeftType;//0表示指向的是子树,1表示指向前驱节点
    int RightType;

    public int getLeftType() {
   
        return LeftType;
    }

    public void setLeftType(int leftType) {
   
        LeftType = leftType;
    }

    public int getRightType() {
   
        return RightType;
    }

    public void setRightType(int rightType) {
   
        RightType = rightTy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值