二叉树深度

来源:互联网 发布:上海德颐网络正规吗 编辑:程序博客网 时间:2024/05/21 15:40

递归

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class Solution {public:    int TreeDepth(TreeNode* pRoot)    {        if(pRoot==nullptr)            return 0;        int left_depth=TreeDepth(pRoot->left);        int right_depth=TreeDepth(pRoot->right);        return left_depth>right_depth ? (left_depth+1):(right_depth+1);    }};

层次遍历,需要用queue而不用stack

class Solution {public:    int TreeDepth(TreeNode* pRoot)    {        queue<TreeNode*> q;        if(!pRoot) return 0;        q.push(pRoot);        int level=0;        while(!q.empty()){            int len=q.size();            level++;            while(len--){                TreeNode* tem=q.front();                q.pop();                if(tem->left) q.push(tem->left);                if(tem->right) q.push(tem->right);            }        }        return level;    }};
1 0