你写的第一条性质有问题,应该是第i层最多有2的(i-1)次方个结点。
对于第一个问题:
你说的垂直算法应该是指这三种:
1.中序遍历
递归算法定义: 若二叉树非空,则依次执行如下操作: (1)遍历左子树; (2)访问根结点; (3)遍历右子树。
2.先序遍历
递归算法定义: 若二叉树非空,则依次执行如下操作: (1) 访问根结点; (2) 遍历左子树; (3) 遍历右子树。
3.后序遍历
递归算法定义: 若二叉树非空,则依次执行如下操作: (1)遍历左子树; (2)遍历右子树; (3)访问根结点。
而你说的水平算法应该是指 :层序遍历
二叉树的操作定义为:若二叉树为空,则退出,否则,按照树的结构,从根开始自上而下,自左而右访问每一个结点,从而实现对每一个结点的遍历。
根据定义,应该就可以知道两者的区别了吧!
对于第二个问题:
如果把你写的二叉树的三条性质搞清楚的话,就可以类推了!如果是K叉树的话,那么第二层最多有K个结点,第三层最多有k的平方个结点,类推的话,那么第i层最多有k的(i-1)个结点。
深度为M的K叉树的话,最多应该有1+k^1+k^2+……+k^(M-1)=(1-k^M)/(1-k)
(^这个符号表示幂运算)
对于第三个问题:
网上有很多相关的算法,搜搜就有了!