赞
踩
二叉树是一种特殊的树结构,其中每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树广泛应用于许多计算机科学领域,如表达式解析、排序、搜索算法等。
节点结构定义:
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int data;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
二叉树的创建:
TreeNode* createNode(int data) {
TreeNode *newNode = (TreeNode *)malloc(sizeof(TreeNode));
if (!newNode) {
printf("Memory error\n");
return NULL;
}
newNode->data = data;
newNode->left = newNode->right = NULL;
return newNode;
}
二叉树的插入(以二叉搜索树为例):
TreeNode* insert(TreeNode *root, int data) {
if (root == NULL) {
root = createNode(data);
} else if (data < root->data) {
root->left = insert(root->left, data);
} else {
root->right = insert(root->right, data);
}
return root;
}
二叉树的遍历:
void preorderTraversal(TreeNode *root) {
if (root) {
printf("%d ", root->data);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
}
void inorderTraversal(TreeNode *root) {
if (root) {
inorderTraversal(root->left);
printf("%d ", root->data);
inorderTraversal(root->right);
}
}
void postorderTraversal(TreeNode *root) {
if (root) {
postorderTraversal(root->left);
postorderTraversal(root->right);
printf("%d ", root->data);
}
}
使用场景:
题目1:构建一个二叉搜索树,并进行前序、中序和后序遍历。
解答:
int main() { TreeNode *root = NULL; root = insert(root, 50); insert(root, 30); insert(root, 20); insert(root, 40); insert(root, 70); insert(root, 60); insert(root, 80); printf("Preorder traversal: "); preorderTraversal(root); printf("\n"); printf("Inorder traversal: "); inorderTraversal(root); printf("\n"); printf("Postorder traversal: "); postorderTraversal(root); printf("\n"); return 0; }
通过上述代码,可以实现二叉树的基本操作和遍历方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。