zoukankan      html  css  js  c++  java
  • 算法导论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;
    }

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

  • 相关阅读:
    编程习俗和设计模式
    Design Patterns Quick Memo
    Monty Hall Problem
    RPG game: the lost Roman Army
    A Geeky Game Idea
    App自动化测试:等待webview页面数据加载完成
    Android自动化测试元素定位
    IOS苹果开发者免费证书申请&使用Xcode打包
    pytest测试夹具(fixture)简介
    Unittest与Pytest参数化区别
  • 原文地址:https://www.cnblogs.com/itlqs/p/5131356.html
Copyright © 2011-2022 走看看