题目
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。
思路
求二叉树的深度。
1、递归的方法,属于DFS(深度优先搜索)。
2、按照层次遍历,属于BFS(广度优先搜索)。
一、深度优先(先序遍历)
struct TreeNode
{
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution
{
public:
int treeDepth(TreeNode *root)
{
if (root == nullptr)
return 0;
int left = treeDepth(root->left);
int right = treeDepth(root->right);
return (left > right) ? (left + 1) : (right + 1);
}
};
二、广度优先(层次遍历)
每次让一层的所有节点的孩子入队列,才进入下一层。用 while(len--)
class Solution {
public:
int TreeDepth(TreeNode* root)
{
if (root == nullptr)
return 0;