• 算法导论14:树形数据结构——二叉树 2016.1.14


      从上一篇开始应该就能感受到,其实既然环形的数据结构可以做出来,各种形状的数据结构都可以做出来,只要设计好节点的属性和节点之间的关系就行了。

      用指针的实现会更加好理解,但是编程复杂度会相对更高,用数组实现,编程复杂度相对低,但是相对不那么直观。所以两种方式灵活选择吧。(不过用c++很多内置对象就可以解决很多问题)

      在树的数据结构中,最简单也是最常用的就是二叉树了。关于二叉树的数组实现,在堆排序里已经写过了。所以这里只写一下指针的实现。

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    
    typedef struct _node {
        char ch;
        struct _node *leftchild;
        struct _node *rightchild;
    }node;
    
    void buildtree(node *&p)
    {
        p=(node *)malloc(sizeof(node));
        char c=getch();
        putchar(c);
        if (c==' ') {
            p->leftchild=NULL;
            p->rightchild=NULL;
        }
        else {
            p->ch=c;
            buildtree(p->leftchild);
            buildtree(p->rightchild);
        }
    }
    
    void showmidtree(node *&p)
    {
        if (p->leftchild!=NULL || p->rightchild!=NULL) {
            putchar(p->ch);
        }
        if (p->leftchild!=NULL) shomidtree(p->leftchild);
        if (p->rightchild!=NULL) showmidtree(p->rightchild);
    }
    
    int main()
    {
        node *root;
        buildtree(root);
        showpretree(root);
        return 0;
    }

    在建立的时候还是用到了递归,代码中输出二叉树用的是中序遍历,至于这些规则有什么用,目前我也不太清楚,也许后面会有算法用到吧。

  • 相关阅读:
    团队冲刺第五天
    每日学习
    团队冲刺第四天
    团队冲刺第三天
    每日学习
    2021.4.12
    2021.4.10
    2021.3.18
    2021.3.15
    2021.3.14
  • 原文地址:https://www.cnblogs.com/itlqs/p/5131356.html
Copyright © 2020-2023  润新知