zoukankan      html  css  js  c++  java
  • 二叉树详解

    二叉树详解:

    采用递归的方式进行遍历,这样做的好处时代码十分简洁。

    递归思想:

    (1)每一次函数调用都会有一次返回。当程序流执行到某一级的结尾处时,它会转移到前一级递归继续执行。

    (2)递归函数中,位于递归调用前的语句和各级被调函数具有相同的顺序。

    (3)递归函数中,位于递归调用语句后的语句的执行顺序和各个被调用函数顺序相反。

    (4)递归函数中,必须包含可以终止递归调用的语句。

    (5)每一级的函数调用都有自己的私有变量。

    顺序存储:数组

    链表存储:链表

    typedef struct bi_t_node{

      telemetype data;

      struct bi_t_node *lchild, *rchild;

    }bi_t_node, *bi_tree;

    前序遍历:第一次到达节点时,自左向右

    中序遍历:第二次到达节点时,自左向右

    后序遍历:第三次到达节点时,自左向右

    层序遍历:自上而下,,自左向右

    示例:

     1 /* 二叉树前序遍历递归算法 */
     2 void pre_order_traverse(bi_tree t)
     3 {
     4     if(NULL == t)
     5         return;
     6     printf("%c", t->data);
     7 
     8     pre_order_traverse(t->lchild);
     9     pre_order_traverse(t->rchild);
    10 }
    11 
    12 /* 二叉树的中序遍历递归算法 */
    13 void in_order_traverse(bi_tree t)
    14 {
    15     if(NULL == t)
    16         return;
    17 
    18     in_order_traverse(t->lchild);
    19     printf("%c", t->data);
    20     in_order_traverse(t->rchild);
    21 }
    22 
    23 /* 二叉树的后续遍历递归算法 */
    24 void post_order_traverse(bi_tree t)
    25 {
    26     if(NULL == t)
    27         return;
    28 
    29     post_order_traverse(t->lchild);
    30     post_order_traverse(t->rchild);
    31     printf("%c", t->data);
    32 }
  • 相关阅读:
    Java8常用新特性实践
    Presto集群部署
    Exception: Unexpected End Of File(crontab)
    centos6环境下使用yum安装Ambari
    pyspark进行词频统计并返回topN
    七行代码开始flask
    hibernate初步4
    java四大域总结
    servlet中的转发和重定向问题
    一个web页面的访问的过程
  • 原文地址:https://www.cnblogs.com/live-program/p/11136324.html
Copyright © 2011-2022 走看看