剑指offer---二叉树的深度

来源:互联网 发布:2016江西统计局数据 编辑:程序博客网 时间:2024/05/20 22: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) return 0;        /*递归        return max(TreeDepth(pRoot->left),TreeDepth(pRoot->right))+1;        */        //非递归        queue<TreeNode*> que;//队列        que.push(pRoot);//根结点进队列        int depth=0;        while(!que.empty()){            depth++;            int size=que.size();            for(int i=0;i<size;i++){                TreeNode *node=que.front();                que.pop();                if(node->left) que.push(node->left);                if(node->right) que.push(node->right);            }        }        return depth;    }};