zoukankan      html  css  js  c++  java
  • 二叉树的 前序 || 中序 || 后序遍历

    直奔代码:

      1 ///前序遍历:先遍历根节点,再遍历左子树,最后遍历右子树
      2 /*
      3 #include <bits/stdc++.h>
      4 using namespace std;
      5 
      6 struct tree
      7 {
      8     struct tree *left;
      9     int date;
     10     struct tree *right;
     11 };
     12 typedef struct tree treenode;
     13 typedef struct tree * b_tree;
     14 
     15 b_tree add(b_tree root, int node)    ///插入结点+
     16 {
     17     b_tree newnode;
     18     b_tree currentnode;
     19     b_tree parentnode;
     20 
     21     newnode = (b_tree)malloc(sizeof(treenode));
     22     newnode->date = node;
     23     newnode->left = NULL;
     24     newnode->right = NULL;
     25 
     26     if(root == NULL)         ///第一个结点建立
     27         return newnode;
     28     else
     29     {
     30         currentnode = root; ///储存当前结点
     31         while(currentnode != NULL)     ///当前结点不为空
     32         {
     33             parentnode = currentnode;  ///储存父结点
     34             if(currentnode->date > node)
     35                 currentnode = currentnode->left;  ///左子树
     36             else
     37                 currentnode = currentnode->right; ///右子树
     38         }
     39         if(parentnode->date > node)
     40             parentnode->left = newnode;
     41         else
     42             parentnode->right = newnode;
     43     }
     44     return root;
     45 }
     46 
     47 b_tree create(int *data, int len)
     48 {
     49     int i;
     50     b_tree root = NULL;
     51     for(int i = 1; i <= len; i++)
     52     {
     53         root = add(root, data[i]);
     54     }
     55     return root;
     56 }
     57 
     58 void print(b_tree root)
     59 {
     60     if(root != NULL)
     61     {
     62         cout << root->date << ' ';
     63         print(root->left);
     64         print(root->right);
     65     }
     66 }
     67 
     68 int main()
     69 {
     70     int N;
     71     b_tree root = NULL;
     72     cin >> N;
     73     int node[N+1];
     74     for(int i = 1; i <= N; i++)
     75         cin >> node[i];
     76     root = create(node, N);
     77     print(root);
     78     cout << endl;
     79     return 0;
     80 }
     81 */
     82 
     83 
     84 ///中序遍历:先遍历左子树,再遍历根结点,最后才遍历右子树
     85 /*
     86 void print(b_tree root)
     87 {
     88     if(root != NULL)
     89     {
     90         print(root->left);
     91         cout << root->date << ' ';
     92         print(root->right);
     93     }
     94 }
     95 */
     96 
     97 ///后序遍历:先遍历左子树,再遍历右子树,最后才遍历根结点
     98 /*
     99 void print(b_tree root)
    100 {
    101     if(root != NULL)
    102     {
    103         print(root->left);
    104         print(rooy->right);
    105         cout << root->date << ' ';
    106     }
    107 }
    108 */
  • 相关阅读:
    初识python 2.x与3.x 区别
    装饰器
    函数的进阶
    Spring Boot启动问题:Cannot determine embedded database driver class for database type NONE
    22.Spring Cloud Config安全保护
    23.Spring Cloud Bus 无法更新问题(踩坑) Spring cloud config server Could not fetch remote for master remote
    24.Spring Cloud之Spring Cloud Config及Spring Cloud Bus
    Spring Boot整合Spring Data Elasticsearch 踩坑
    项目中Spring Security 整合Spring Session实现记住我功能
    32.再谈SpringBoot文件上传
  • 原文地址:https://www.cnblogs.com/ymzjj/p/9395216.html
Copyright © 2011-2022 走看看