首页 > 其他分享 >线索化二叉树

线索化二叉树

时间:2022-09-25 23:14:38浏览次数:49  
标签:10 结点 链表 二叉树 线索 指针

  • 将数列 {1, 3, 6, 8, 10, 14 } 构建成一颗二叉树

  • 问题分析
当我们对上面的二叉树进行中序遍历时,数列为 {8, 3, 10, 1, 6, 14 }
但是 6, 8, 10, 14 这几个节点的左右指针,并没有完全的利用上.
如果我们希望充分的利用各个节点的左右指针,让各个节点可以指向自己的前后节点
解决方案:线索二叉树
  • 简介
n个结点的二叉链表中含有n+1  【公式 2n-(n-1)=n+1】 个空指针域。利用二叉链表中的空指针域,存放指向该结点在某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为"线索")

这种加上了线索的二叉链表称为线索链表,相应的二叉树称为线索二叉树(Threaded BinaryTree)。根据线索性质的不同,线索二叉树可分为前序线索二叉树、中序线索二叉树和后序线索二叉树三种

一个结点的前一个结点,称为前驱结点,例如在数列{8, 3, 10, 1, 6, 14 }中3的前驱结点是8
一个结点的后一个结点,称为后继结点

标签:10,结点,链表,二叉树,线索,指针
From: https://www.cnblogs.com/chniny/p/16729337.html

相关文章

  • 顺序存储二叉树
    简介从数据存储来看,数组存储方式和树的存储方式可以相互转换,即数组可以转换成树,树也可以转换成数组特点顺序二叉树通常只考虑完全二叉树第n个元素的左子节点为......
  • 二叉树的最大深度
    二叉树的最大深度一、题目描述给定一个二叉树,找出其最大深度。二叉树的最大深度为根节点到最远叶子节点的最长路径上的节点数。叶子节点时没有字节点的。实例:给定二叉......
  • 平衡二叉树(AVL)的插入和删除
    在计算机科学中,AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个子树的高度最大差别为1,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是......
  • LeetCode2096 从二叉树一个节点到另一个节点每一步的方向
    LeetCode2096从二叉树一个节点到另一个节点每一步的方向最近公共祖先的变形题.#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,val......
  • 二叉树遍历
    应用实例代码实现publicclassBinaryTreeDemo{ publicstaticvoidmain(String[]args){ //先需要创建一颗二叉树 BinaryTreebinaryTree=newBinary......
  • 二叉树
    数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较......
  • 二叉树查找和删除指定结点
    二叉树查找指定的节点前序查找的思路1.先判断当前节点的no是否等于要查找的2.如果是相等,则返回当前节点3.如果不等,则判断当前节点的左子节点是否为空,如果不为空,则递归......
  • 力扣-226-翻转二叉树/剑指Offer-27-二叉树的镜像
    直达链接直观的想法:我可以遍历并重建,但也很明显效率低下,可能达到O(N2),但或许可能拿来当作练习,检查自己遍历/重建二叉树的基本功不过现在先想想有没有效率更高的解法,我觉......
  • 力扣106 构造二叉树
      class Solution {public:    TreeNode* buildTree(vector<int>& inorder, vector<int>& postorder) {    return reBuild(inorder, postorder);......
  • 力扣101 对称二叉树
        class Solution {public:    bool isSymmetric(TreeNode* root) {    if (root == nullptr)        return true;    retur......