104. 二叉树的最大深度

原题链接:104. 二叉树的最大深度

深度:树的根结点到叶子结点的距离
高度:树内的某个结点到叶子结点的距离

根据这个定义和题意,可以理解该题 求树的深度,也可转化为,求根节点到叶子结点的高度
用后序遍历:左右中 来做即可
只需要判断左子树和右子树的高度谁更高,在这个高度上+1(本层算上就是+1) 就是本层到根结点的高度

class Solution {
public:
    int get_hight(TreeNode* Node)
    {
        //如果遇到叶子结点,返回高度0
        if(Node == NULL) return 0;
        //进入左子树
        int left_hight = get_hight(Node ->left);
        //进入右子树
        int right_hight = get_hight(Node ->right);
        //高度等于 1 + 左子树和右子树高度的最大值(不理解就带实数逐语句过一遍就理解了)
        int hight = 1 + max(left_hight,right_hight);
        //返回当前子树的高度
        return hight;
    }

    int maxDepth(TreeNode* root) {
        //先判断树是否为空
        if(root == NULL) return NULL;
        //获取树的根节点到叶子节点的高度(整棵树的深度)
        int hight = get_hight(root);
        return hight;
    }
};

你可能感兴趣的:(二叉树,数据结构)