• Tree树


    tree,是非线性数据结构,array、linked list、stack、queue,是线性数据结构。

    线性数据结构:数据元素是一对一

    非线性数据结构:数据元素存在一对多或者多对一的关系

     1 #include<stdio.h>
     2 #include<stdlib.h>
     3 
     4 struct tree
     5 {
     6     int data;
     7     struct tree * left;
     8     struct tree * right;
     9 };
    10 struct tree * newNode(int data)
    11 {
    12     struct tree * root = (struct tree *)malloc(sizeof(struct tree));
    13     root->data = data;
    14     root->left = NULL;
    15     root->right = NULL;
    16 
    17     return root;
    18 }
    19 void printLevelOrder(struct tree * root)
    20 {
    21     int height = getHeight(root);
    22 
    23     printf("%d
    ", height);
    24     for(int i = 1; i <= height; i++)
    25     {
    26         printGivenLevel(root, i);
    27     }
    28 }
    29 void printGivenLevel(struct tree * root, int level)
    30 {
    31     if(NULL == root)
    32     {
    33         return ;
    34     }
    35     if(1 == level)
    36     {
    37         printf("%d  ", root->data);
    38     }
    39     else if(level > 1)
    40     {
    41         printGivenLevel(root->left, level-1);
    42         printGivenLevel(root->right, level-1);
    43     }
    44 }
    45 int getHeight(struct tree * root)
    46 {
    47     int lheight = 0;
    48     int rheight = 0;
    49 
    50     if(NULL == root)
    51     {
    52         return 0;
    53     }
    54     else
    55     {
    56         //两个递归有点恶心,头脑混乱的话,最好调试下,屡一下
    57         lheight = getHeight(root->left);
    58         rheight = getHeight(root->right);
    59 
    60         if(lheight > rheight)
    61         {
    62             return (lheight + 1);
    63         }
    64         else
    65         {
    66             return (rheight + 1);
    67         }
    68     }
    69 }
    70 int main(void)
    71 {
    72     struct tree * root = newNode(1);
    73     root->left = newNode(2);
    74     root->right = newNode(3);
    75     root->left->left = newNode(4);
    76     root->left->right = newNode(5);
    77 
    78     printLevelOrder(root);
    79     return 0;
    80 }
  • 相关阅读:
    如何为惠普笔记本ProBook 4431S清理电源风扇通风口灰尘
    office app之 Mail App 从新建到发布
    sublime_text3汉化,破解,安装Package_control支持中文显示
    poj3126prime+BFS
    android开发之欢迎界面
    poj 1151 离散化
    DbVisualizer 9 解决中文乱码问题
    RS232、RS422与RS485串口标准简介
    动态创建菜单和动态关联菜单项事件
    更改路径
  • 原文地址:https://www.cnblogs.com/AI-Cobe/p/9359059.html
Copyright © 2020-2023  润新知