二叉树查算法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小时内删除。