数据结构和算法——中序线索化二叉树

1、中序线索化二叉树  创建如上的二叉树,线索化二叉树时,根据指定的遍历方式得到的节点的访问顺序,一个节点前面的节点,叫做前驱节点,一个节点后面的节点,叫做后继节点。  线索化二叉树的规则:  按照某一遍历规则。记录当前节点(cur),上次访问的节点(pre)。   ① 如果当前节点的左孩子为空 (cur.leftNode == null),就让当前节点的左指针指向它的前驱节点 ,并把当...
摘要由CSDN通过智能技术生成

1、中序线索化二叉树

在这里插入图片描述
  创建如上的二叉树,线索化二叉树时,根据指定的遍历方式得到的节点的访问顺序,一个节点前面的节点,叫做前驱节点,一个节点后面的节点,叫做后继节点。

线索化二叉树的规则:

  按照某一遍历规则。记录当前节点(cur)上次访问的节点(pre)
   如果当前节点的左孩子为空 (cur.leftNode == null),就让当前节点的左指针指向它的前驱节点 ,并把当前节点左指针的模式修改为线索类型 (cur.leftNode = pre ,cur.leftType = 1)
   如果当前节点的前驱节点的右孩子为空 (pre.rightNode == null),就让当前节点的前驱节点的右指针指向当前节点,并把前驱节点的右指针修改为线索类型 (pre.rightNode = cur ,pre.rightType = 1)。

代码实现:

/**
 * 线索二叉树节点
 */
public class ThreadedNode {
   
    //节点的权
    int value;
    //节点的左右孩子节点
    ThreadedNode leftNode;
    ThreadedNode rightNode;
    //表示指针的类型
    int leftType;
    int rightType;

    //设置节点的权值
    public ThreadedNode(int value) {
   
        this.value = value;
    }

    //设置节点的左右孩子节点
    public void setLeftNode(ThreadedNode leftNode) {
   
        this.leftNode = leftNode;
    }

    public void setRightNode(ThreadedNode rightNode) {
   
        this.rightNode = rightNode;
    }

    //获取节点的左右孩子节点
    public ThreadedNode getLeftNode() {
   
        return this.leftNode;
    }

    
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值