二叉树的高度是指从根节点到最远叶子节点的最长路径上的节点数。计算二叉树高度的方法有多种,以下是几种常见的方法:
递归法
int height(TreeNode* root) {
if (root == NULL) return 0;
int leftHeight = height(root->left);
int rightHeight = height(root->right);
return max(leftHeight, rightHeight) + 1;
}
迭代法(后序遍历)
int BT_high(BiTree T) {
BiTree p = T, r = NULL;
int max = 0;
stack
s; while (p != NULL || !s.empty()) {
while (p != NULL) {
s.push(p);
p = p->left;
}
p = s.top();
s.pop();
max = max + 1;
p = p->right;
}
return max;
}
层次遍历
通过队列实现层次遍历,记录每一层的节点数,最大值即为树的高度。
满二叉树特性
如果左子树为满树,可以直接计算右子树的高度;如果左子树非满树,则右子树必为满树。
以上方法都可以用来计算二叉树的高度,选择哪一种取决于具体的应用场景和个人偏好。需要注意的是,递归方法的时间复杂度为O(N),其中N是树中节点的数量,因为每个节点都会被访问一次。而迭代方法的时间复杂度通常为O(N),因为需要遍历所有节点。