树概念:
节点n1到nk的路径:为节点n1、n2、...、nk的一个序列,是的对于1<=i<k,节点ni是ni+1的父亲;
路径的长:路径上边的条数,如上面为k-1;
ni的深度:从根到ni的唯一路径的长。根的深度为0;
ni的高度:从ni到一片叶子的最长路径的长。树叶的高度为0,一棵树的高度等于根的高,(通常定义空树的高为-1)。
二叉树的节点声明:
typedef
BiTNode *rchild;
}BiTNode,*BiTree;
二叉树的建立及先序、中序、后序递归遍历参考链接:
http://blog.sina.com.cn/s/blog_a19e8c1b01016m2v.html
注:二叉树的建立采用“先序递归”的方式。
二叉树非递归先序、中序、后序遍历参考链接:
http://blog.youkuaiyun.com/hackbuteer1/article/details/6583988
注:先序非递归遍历有三种方式:
第一种为根压栈,循环{左孩子压栈,右孩子压栈};
第二种为先根压栈,然后{左子树中所有左孩子全部压栈,然后再右孩子压栈}。
中序非递归遍历:两种方法差不多。
后序非递归遍历:
方法一:根压栈,{左子树所有左孩子压栈,然后右子树压栈(但是根在左右子树出栈后再出栈)};
方法二:双栈法:栈s1做缓冲,栈s2先压进s1出栈的根,再压进s1出栈的右子树,再压进s1出栈的左子树,这样s2输出时就为后序非递归遍历。
包含了二叉树的非递归层次遍历。
二叉树的递归层次遍历:
http://blog.youkuaiyun.com/stpeace/article/details/8138458
http://blog.youkuaiyun.com/luckyxiaoqiang/article/details/7518888;
未完待续...