给定一棵用二叉链表表示的二叉树,其根指针为 root,试写出求二叉树的深度的法
时间: 2023-06-04 10:06:08 浏览: 248
求二叉树的深度
方法一:递归法
递归地求解左子树的深度和右子树的深度,然后取最大值加1即为整棵树的深度。
示例代码:
int maxDepth(TreeNode* root) {
if (!root) return 0;
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return max(leftDepth, rightDepth) + 1;
}
方法二: 迭代法
采用层序遍历的方式遍历二叉树,记录深度,直到遍历到最后一层为止,即可得到二叉树的深度。
示例代码:
int maxDepth(TreeNode* root) {
if (!root) return 0;
queue<TreeNode*> q{{root}};
int depth = 0;
while (!q.empty()) {
int size = q.size();
while (size--) {
auto node = q.front(); q.pop();
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
depth++;
}
return depth;
}
阅读全文