二叉树查算法c语言
二叉树查算法可以通过递归或者迭代的方式实现。以下是一个用C语言实现二叉树查的示例代码:
c
#include <stdio.h>
#include <stdlib.h>
二叉树节点定义
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
创建一个新的节点
struct TreeNode* createNode(int val) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
向二叉树中插入一个节点
struct TreeNode* insertNode(struct TreeNode* root, int val) {
如果根节点为空,直接插入为根节点
if (root == NULL) {
return createNode(val);
}
如果插入的值小于根节点的值,则递归插入到左子树中
else if (val < root->val) {
root->left = insertNode(root->left, val);
}
如果插入的值大于等于根节点的值,则递归插入到右子树中
else {
root->right = insertNode(root->right, val);
}
return root;
}
在二叉树中查一个值
struct TreeNode* search(struct TreeNode* root, int val) {
如果根节点为空或者到了对应的节点,则返回根节点
if (root == NULL root->val == val) {
return root;
完全二叉树算法 }
如果查的值小于根节点的值,则继续在左子树中查
else if (val < root->val) {
return search(root->left, val);
}
如果查的值大于根节点的值,则继续在右子树中查
else {
return search(root->right, val);
}
}
int main() {
创建一个示例二叉树: [5, 3, 6, 2, 4, null, null, 1]
struct TreeNode* root = createNode(5);
root->left = createNode(3);
root->right = createNode(6);
root->left->left = createNode(2);
root->left->right = createNode(4);
root->left->left->left = createNode(1);
int target = 4;
struct TreeNode* result = search(root, target);
if (result == NULL) {
printf("Node %d not found\n", target);
} else {
printf("Node %d found\n", target);
}
return 0;
}
在上述代码中,首先定义了一个二叉树的节点结构体`TreeNode`,并实现了创建节点的函数`createNode`。然后,通过插入节点的函数`insertNode`创建了一个示例二叉树。
最后,在`main`函数中,调用`search`函数来查二叉树中的某个值。如果到了对应的节点,则返回该节点;否则,返回`NULL`表示未到。根据返回的结果,打印对应的输出信息。
注:为了简化示例,我们只创建了一个简单的二叉树,实际应用中可能需要根据具体的需求来构建二叉树。此外,上述代码中并未进行内存释放,实际应用中需要根据具体情况来释放内存。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论