在程序开始时用先序/中序/后序遍历的顺序建立二叉链表的递归算法 1、先序遍历二叉树的递归算法 2、中序遍历二叉树的递归算法 3、后序遍历二叉树的递归算法 4、计算二叉树的深度的递归算法 5、统计二叉树的结点个数的递归算法 6、统计二叉树的叶子结点个数的递归算法 7、设计该二叉树第K层的结点个数。 8、求该二叉树中所有结点值最大的元素。 9、打印二叉树的叶子结点数的递归算法
时间: 2023-11-13 21:25:20 浏览: 91
1、先序遍历二叉树的递归算法:
```c
void preorderTraversal(struct TreeNode* root) {
if (root == NULL) return;
printf("%d ", root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
```
2、中序遍历二叉树的递归算法:
```c
void inorderTraversal(struct TreeNode* root) {
if (root == NULL) return;
inorderTraversal(root->left);
printf("%d ", root->val);
inorderTraversal(root->right);
}
```
3、后序遍历二叉树的递归算法:
```c
void postorderTraversal(struct TreeNode* root) {
if (root == NULL) return;
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->val);
}
```
4、计算二叉树的深度的递归算法:
```c
int maxDepth(struct TreeNode* root) {
if (root == NULL) return 0;
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return leftDepth > rightDepth ? leftDepth + 1 : rightDepth + 1;
}
```
5、统计二叉树的结点个数的递归算法:
```c
int countNodes(struct TreeNode* root) {
if (root == NULL) return 0;
int leftCount = countNodes(root->left);
int rightCount = countNodes(root->right);
return leftCount + rightCount + 1;
}
```
6、统计二叉树的叶子结点个数的递归算法:
```c
int countLeafNodes(struct TreeNode* root) {
if (root == NULL) return 0;
if (root->left == NULL && root->right == NULL) return 1;
int leftCount = countLeafNodes(root->left);
int rightCount = countLeafNodes(root->right);
return leftCount + rightCount;
}
```
7、设计该二叉树第K层的结点个数:
```c
int countNodesAtKLevel(struct TreeNode* root, int k) {
if (root == NULL || k < 1) return 0;
if (k == 1) return 1;
int leftCount = countNodesAtKLevel(root->left, k - 1);
int rightCount = countNodesAtKLevel(root->right, k - 1);
return leftCount + rightCount;
}
```
8、求该二叉树中所有结点值最大的元素:
```c
int findMax(struct TreeNode* root) {
if (root == NULL) return INT_MIN;
int leftMax = findMax(root->left);
int rightMax = findMax(root->right);
return max(max(leftMax, rightMax), root->val);
}
```
9、打印二叉树的叶子结点数的递归算法:
```c
void printLeafNodeCount(struct TreeNode* root) {
printf("Leaf node count: %d\n", countLeafNodes(root));
}
```
阅读全文