二叉树的深度可通过BFS,DFS计算获得。
#include <iostream>
#include <queue>
using namespace std;
class TreeNode
{
public:
TreeNode* left;
TreeNode* right;
int val;
TreeNode(int value):val(value),left(NULL),right(NULL){}
};
// BFS实现二叉树的深度计算
int bfs(TreeNode* root)
{
if(root == NULL) return 0;
int dep = 0;
queue<TreeNode*> q_node;
q_node.push(root);
while(!q_node.empty())
{
int n_size = q_node.size();
for(int i = 0;i<n_size;i++)
{
TreeNode* node = q_node.front();
q_node.pop();
if(node->left) q_node.push(node->left);
if(node->right) q_node.push(node->right);
}
dep++;
}
return dep;
}
// DFS实现二叉树的深度计算
// 递归函数的功能是计算树的最大深度
int dfs(TreeNode* root)
{
if(root == NULL)
return 0;
int l = dfs(root->left);
int r = dfs(root->right);
return max(l+1,r+1);
}
int main()
{
TreeNode* root = new TreeNode(10);
root->left = new TreeNode(10);
root->right = new TreeNode(10);
root->left->left = new TreeNode(100);
// BFS 实现
cout<<bfs(root)<<endl;
// DFS实现
cout<<dfs(root)<<endl;
}