C语言编写递归算法,求二叉树中以元素值为x的结点为根的子树的深度
时间: 2024-12-15 17:23:23 浏览: 11
1_寻找二叉树中以x元素为根的子树的深度_
在C语言中,我们可以使用递归算法来计算二叉树中以给定元素值`x`作为根节点的子树的深度。这里假设我们有一个简单的二叉树结构,每个节点包含一个值、左孩子和右孩子指针。
首先,我们需要定义一个二叉树节点的数据结构:
```c
typedef struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
} TreeNode;
```
然后编写递归函数`findDepth`来计算深度:
```c
int findDepth(TreeNode* root, int target) {
// 如果根节点为空,返回0表示空树
if (root == NULL)
return 0;
// 如果当前节点就是目标值,深度加一并返回
if (root->val == target)
return 1;
// 递归地在左右子树寻找,取较大深度
int leftDepth = findDepth(root->left, target);
int rightDepth = findDepth(root->right, target);
// 返回当前节点的深度加上最长分支的深度
return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}
```
在这个函数中,我们会检查当前节点是否是我们正在查找的目标值,如果是,我们就返回1(因为根节点的深度是1)。如果不是,我们会分别在左右子树中递归寻找,并返回更深的那个子树的深度加上1。
阅读全文