二叉树递归遍历应用

来源:互联网 发布:linux mv命令 文件夹 编辑:程序博客网 时间:2024/06/05 11:18

         递归的思想是循环做相似的事件,二叉树有左右子树,对于统计而言,可以递归地对左右子树进行操作。递归有时很难想,在这里提供一条思路来想,判断它是否可以进行递归操作,然后考虑没有结点时的返回值,只有一个结点时的返回值,然后再推广。

        例1:求二叉树的高度

        如果为空,则返回0,如果只有一个结点,则返回1,剩下的就是左子树的高度与右子树的高度的最大值加1。

        public int heightNode(Node root) {

int left, right;

if (root == null)

return 0;

else if (root.left == null && root.right == null)

return 1;

else {

left = heightNode(root.left);

right = heightNode(root.right);

return (left > right) ? (left + 1) : (right + 1);

}

}

        例2:求二叉树中叶子结点的个数

       如果为空,则返回1,如果只有一个结点则返回1,剩下的就是左子树的叶子结点加右子树的叶子结点个数。

       public int count(Node root){

if(root==null)

return 0;

else if(root.left==null && root.right==null)

return 1;

else

return count(root.left)+count(root.right);

}