`
housen1987
  • 浏览: 346291 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论
阅读更多

二叉树的存储

1 顺序存储结构

将二叉树的所有节点,按照一定的次序,存储到连续的存储单元中,这样一般情况下只能对完全二叉树实现满员存储,而对于一般二叉树,则会浪费一定的存储空间,所以顺序存储一般不适用于树。

2 链式存储结构

一个树节点包含3个部分:数据域(Data),左孩子(Lchild),右孩子(Rchild)。

链式存储结构形成的二叉树称为二叉链表。

结构声明如下:

struct{
    datatype data;
    struct BNode *lchild;
    struct BNode *rchild;   
}BNode;

可以看出,二叉链表的定义其实是一种递归定义方式。 


3 二叉树的遍历和应用


3.1 先序遍历(DLR)

  • 访问根节点
  • 访问左孩子
  • 访问右孩子

具体算法:

preVisit(BNode *root){
    if(root != NULL){
        visit(root->data);
        preVisit(root->lchild);
        preVisit(root->rchild);
    }
}

3.2 中序遍历(LDR)

  • 访问左子树
  • 访问根节点
  • 访问右子树

具体算法:

midVisit(BNode *root){
    if(root != NULL){
        midVisit(root->lchild);
        visit(root->data);
        midVisit(root->rchild);
    }
}
 

3.3 后序遍历(LRD)

  • 访问左子树
  • 访问右子树
  • 访问根节点

具体算法:

lastVisit(BNode *root){
    if(root != NULL){
        lastVisit(root->lchild);
        lastVisit(root->rchild);
        visit(root->data);
    }
}

4 求二叉链表的高度算法:

int getHigh(BNode *root){
    int lh,rh;
    if(root == NULL) return 0;
    else{
        lh = getHigh(root->lchild);
        rh = getHigh(root->rchild);
        return lh > rh ? lh+1:rh+1;  
    }
}
 

 

分享到:
评论

相关推荐

    二叉树深度_二叉树查询_二叉树深度_

    二叉树是一种在计算机科学中广泛应用的数据结构,它由节点(也称为结点)组成,每个节点最多有两个子节点,通常称为左子节点和右子节点。二叉树的深度是指从根节点到最远叶节点的最长路径上边的数目,即树的最大层数...

    二叉树演示 实现二叉树图形显示

    二叉树是一种特殊的树结构,每个节点最多只有两个子节点,通常分为左子节点和右子节点。在计算机科学中,二叉树被广泛应用于数据的组织和操作,如搜索、排序、文件系统等。本例子关注的是如何实现二叉树的图形显示,...

    根据后序二叉树序列构造二叉树_扩展二叉树

    在计算机科学领域,二叉树是一种基础的数据结构,它由结点构成,每个结点最多有两个子节点,分别称为左子节点和右子节点。在众多的二叉树操作中,根据后序遍历序列(也称为后序序列)来构造二叉树是一项常见的任务。...

    二叉树建立 二叉树基本算法的实现

    (2)先序、中序、后序遍历二叉树:递归算法。 (3)中序遍历二叉树:非递归算法(最好也能实现先序,后序非递归算法)。 (4)求二叉树的高度 。 (5)求二叉树的叶子个数。 (6)对于树中每一个元素值为x的结点...

    第六章 树和二叉树作业及答案(100分).docx

    - **答案解析**:如果一棵二叉树的中序遍历序列和后序遍历序列正好相反,那么该二叉树一定是任一结点都没有左孩子的二叉树。 #### 5. 二叉树的结点数范围 - **答案解析**:深度为k的二叉树最多有\(2^k - 1\)个结点...

    将满二叉树转化为求和二叉树_二叉树_

    在IT领域,特别是数据结构和算法的学习中,二叉树是一种重要的抽象数据类型。满二叉树是一种特殊的二叉树,其中每一层都是完全填充的,除了可能的最后一层,且最后一层的所有节点都尽可能地向左靠拢。而将满二叉树...

Global site tag (gtag.js) - Google Analytics