用c++写一段关于二叉树的操作代码
时间: 2023-03-09 19:32:01 浏览: 75
// 对二叉树进行先序遍历的操作代码
void PreOrder(struct TreeNode *root)
{
if(root != NULL)
{
// 访问当前节点
printf("%d ", root->data);
// 遍历左子树
PreOrder(root->left);
// 遍历右子树
PreOrder(root->right);
}
}
相关问题
帮我用c++写一段求二叉树深度的代码
以下为使用C语言实现求二叉树深度的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
};
int maxDepth(struct TreeNode* root) {
if (root == NULL) {
return 0;
} else {
int leftDepth = maxDepth(root->left);
int rightDepth = maxDepth(root->right);
return (leftDepth > rightDepth ? leftDepth : rightDepth) + 1;
}
}
int main() {
// 构造一个二叉树
struct TreeNode* root = (struct TreeNode*)malloc(sizeof(struct TreeNode));
root->val = 1;
struct TreeNode* node2 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node2->val = 2;
struct TreeNode* node3 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node3->val = 3;
struct TreeNode* node4 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node4->val = 4;
struct TreeNode* node5 = (struct TreeNode*)malloc(sizeof(struct TreeNode));
node5->val = 5;
root->left = node2;
root->right = node3;
node2->left = node4;
node2->right = NULL;
node3->left = NULL;
node3->right = node5;
node4->left = NULL;
node4->right = NULL;
node5->left = NULL;
node5->right = NULL;
// 求二叉树深度
int depth = maxDepth(root);
printf("The depth of the binary tree is: %d\n", depth);
// 释放内存
free(node5);
free(node4);
free(node3);
free(node2);
free(root);
return 0;
}
```
这里我们构造了一个二叉树,并使用`maxDepth`函数求出了其深度。其中,`maxDepth`函数采用递归的方式实现,对于每一个节点,我们分别计算其左子树和右子树的深度,并取两者中的较大值,最后加上1即为该节点所在子树的深度。如果该节点为空,则返回0。最终,整棵树的深度即为根节点的深度。
用c++写一段代码:二叉树的四种遍历 方法
#include <stdio.h>
#include <stdlib.h>
//定义二叉树结构体
typedef struct BiTreeNode {
int data;
struct BiTreeNode* left;
struct BiTreeNode* right;
} BiTreeNode, * BiTree;
//创建新结点
BiTreeNode* createNode(int data) {
BiTreeNode* node = (BiTreeNode*)malloc(sizeof(BiTreeNode));
node->data = data;
node->left = NULL;
node->right = NULL;
return node;
}
//插入结点
void insertNode(BiTree* tree, int data) {
if (*tree == NULL) {
*tree = createNode(data);
return;
}
if (data < (*tree)->data) {
insertNode(&(*tree)->left, data);
}
else if (data > (*tree)->data) {
insertNode(&(*tree)->right, data);
}
}
//前序遍历
void preorderTraversal(BiTree tree) {
if (tree == NULL) {
return;
}
printf("%d ", tree->data);
preorderTraversal(tree->left);
preorderTraversal(tree->right);
}
//中序遍历
void inorderTraversal(BiTree tree) {
if (tree == NULL) {
return;
}
inorderTraversal(tree->left);
printf("%d ", tree->data);
inorderTraversal(tree->right);
}
//后序遍历
void postorderTraversal(BiTree tree) {
if (tree == NULL) {
return;
}
postorderTraversal(tree->left);
postorderTraversal(tree->right);
printf("%d ", tree->data);
}
//层序遍历
void levelorderTraversal(BiTree tree) {
if (tree == NULL) {
return;
}
BiTreeNode* queue[1000];
int front = 0, rear = 0;
queue[rear++] = tree;
while (front < rear) {
BiTreeNode* node = queue[front++];
printf("%d ", node->data);
if (node->left != NULL) {
queue[rear++] = node->left;
}
if (node->right != NULL) {
queue[rear++] = node->right;
}
}
}
int main() {
BiTree tree = NULL;
int arr[] = { 5, 3, 7, 2, 4, 6, 8 };
int n = sizeof(arr) / sizeof(int);
for (int i = 0; i < n; i++) {
insertNode(&tree, arr[i]);
}
printf("前序遍历:");
preorderTraversal(tree);
printf("\n中序遍历:");
inorderTraversal(tree);
printf("\n后序遍历:");
postorderTraversal(tree);
printf("\n层序遍历:");
levelorderTraversal(tree);
printf("\n");
return 0;
}
阅读全文
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)