二叉树采用二叉链表存储结构,编写算法,求二叉树中叶子结点的数量,以及右子树的高度
时间: 2024-01-23 14:00:07 浏览: 209
设二叉树采用链式存储结构,试设计一个算法计算一颗给定二叉树叶子节点的数目
5星 · 资源好评率100%
二叉树中叶子节点的数量可以通过递归实现,具体算法如下:
1.如果根节点为空,则叶子节点数为0;
2.如果根节点的左右子树均为空,则叶子节点数为1;
3.否则,递归计算左右子树的叶子节点数之和。
算法实现代码:
int countLeafNodes(TreeNode* root){
if(root == NULL){
return 0;
}
if(root->left == NULL && root->right == NULL){
return 1;
}
int leftLeafNodes = countLeafNodes(root->left);
int rightLeafNodes = countLeafNodes(root->right);
return leftLeafNodes + rightLeafNodes;
}
二叉树右子树的高度可以通过递归实现,具体算法如下:
1.如果根节点为空,则右子树高度为0;
2.如果根节点的右子树为空,则右子树高度为0;
3.否则,递归计算右子树的高度,并加上本身的高度。
算法实现代码:
int rightSubtreeHeight(TreeNode* root){
if(root == NULL){
return 0;
}
if(root->right == NULL){
return 0;
}
return 1 + rightSubtreeHeight(root->right);
}
笑话:为什么巨人总是好心情?因为他们从不把小事放在心上!
阅读全文