二叉树及其实现

树概念:

节点n1到nk的路径:为节点n1、n2、...、nk的一个序列,是的对于1<=i<k,节点ni是ni+1的父亲;

路径的长:路径上边的条数,如上面为k-1;

ni的深度:从根到ni的唯一路径的长。根的深度为0;

ni的高度:从ni到一片叶子的最长路径的长。树叶的高度为0,一棵树的高度等于根的高,(通常定义空树的高为-1)。


二叉树的节点声明:

typedef struct BiTNode{

    char data;

    BiTNode *lchild;

    BiTNode *rchild;

}BiTNode,*BiTree;


二叉树的建立及先序、中序、后序递归遍历参考链接:

http://blog.sina.com.cn/s/blog_a19e8c1b01016m2v.html

注:二叉树的建立采用“先序递归”的方式。


二叉树非递归先序、中序、后序遍历参考链接:

http://blog.csdn.net/hackbuteer1/article/details/6583988

注:先序非递归遍历有三种方式:

              第一种为根压栈,循环{左孩子压栈,右孩子压栈}; 

              第二种为先根压栈,然后{左子树中所有左孩子全部压栈,然后再右孩子压栈}。

       中序非递归遍历:两种方法差不多。

       后序非递归遍历:

              方法一:根压栈,{左子树所有左孩子压栈,然后右子树压栈(但是根在左右子树出栈后再出栈)};

              方法二:双栈法:栈s1做缓冲,栈s2先压进s1出栈的根,再压进s1出栈的右子树,再压进s1出栈的左子树,这样s2输出时就为后序非递归遍历。

      包含了二叉树的非递归层次遍历。


      二叉树的递归层次遍历:

      http://blog.csdn.net/stpeace/article/details/8138458


     轻松搞定面试中的二叉树题目

     http://blog.csdn.net/luckyxiaoqiang/article/details/7518888


       未完待续...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值