二叉树基本题型总结

二叉树

前序|中序|后序遍历

前序:跟+左子树的前序(递归)+右子树的前序(递归)
中序:左子树的中序(递归)+跟+右子树的中序(递归)
后序:左子树后序(递归)+右子树的后序(递归)+跟

递归方法的一些诀窍:
1.不要写方法的就做递归展开,站在自己的角度思考,先不用管其他结点
2.找终止条件,在变化的因素中确定,也就是形参
3.找向下的递推公式
4.理解递归方法的调用过程中,会被调用很多次
****5.理解调用过程中,局部变量会有多份,只是名字一样


一  计算二叉树中的结点个数
1.遍历思想,找一个变量++
2.利用汇总的思想解决
     跟+左子树+右子树


二  计算叶子结点的个数
1.遍历每个结点,判断如果是叶子
count++
2.汇总
整棵树的叶子结点个数=left叶子个数+right叶子个数


三  计算二叉树的高度
汇总:
int left;      左子树的高度
int right;   右子树的高度
int height;max(left,right)+1;

四  计算二叉树第K层的结点个数

public static int calcKLevel(Node root,int k){
        if(root==null){
            return 0;
        }
        if(k==1){
            return 1;
        }
        int left=calcKLevel(root.left,k-1);
        int right=calcKLevel(root.right,k-1);
        int count=left+right;

        return count;
    }
五  查找

首先:结点的值不重复
查找结果:返回包含改值的结点的引用

查找的过程:
1.首先判断根的值是否是要找的值是:直接返回根的值
2.去左子树找
3.如果左子树找到了
          返回该引用
4.否则继续去右子树找

你可能感兴趣的:(二叉树基本题型总结)