C语言求二叉树高度、指定结点所在层次、二叉树的复制
时间: 2024-10-23 15:10:25 浏览: 21
使用C语言求二叉树结点的最低公共祖先的方法
C语言中,求二叉树的高度通常需要递归方法。首先定义一个辅助函数用于计算单个节点的高度,然后在主函数中对根节点进行处理。以下是简单的思路:
**求二叉树高度:**
```c
int maxDepth(struct TreeNode* root) {
if (root == NULL) return 0;
int leftHeight = maxDepth(root->left);
int rightHeight = maxDepth(root->right);
return (leftHeight > rightHeight ? leftHeight : rightHeight) + 1;
}
```
这个函数会返回从根到最远叶子节点的最大路径长度。
**指定结点所在层次:**
对于给定一个节点,通过递归遍历树并计数,当找到目标节点时,返回当前层数。这里有一个辅助函数`getNodeLevel`:
```c
int getNodeLevel(struct TreeNode* root, struct TreeNode* node) {
if (root == NULL || root == node) return 0;
int leftLevel = getNodeLevel(root->left, node);
int rightLevel = getNodeLevel(root->right, node);
return leftLevel > rightLevel ? leftLevel + 1 : rightLevel + 1;
}
```
**二叉树的复制:**
创建一个新的二叉树结构来存储原树的信息,可以采用深度优先搜索(DFS)或广度优先搜索(BFS)的方式:
```c
struct TreeNode* cloneTree(struct TreeNode* root) {
if (root == NULL) return NULL;
struct TreeNode* newRoot = malloc(sizeof(*newRoot));
newRoot->val = root->val;
newRoot->left = cloneTree(root->left);
newRoot->right = cloneTree(root->right);
return newRoot;
}
```
这个函数会返回新复制的与原二叉树结构相同的二叉树。
阅读全文