排序二叉树

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
struct node
{
    int data;
    node *l,*r;
};
int sum;
node *creat(node *root, int x)
{
    if(root == NULL)
    {

        root = new node();
        root->l = NULL;
        root->r = NULL;
        root->data = x;
    }
    else
    {
        if(x>root->data)
            root->r = creat(root->r,x);
        else
            root->l = creat(root->l,x);
    }
    return root;
}
void zhongxu(node *root)
{
    if(root == NULL)
        return ;
    zhongxu(root->l);
    if(root)
    {
        if(sum==0)
        {
            cout<<root->data;
            sum=1;
        }
        else
            cout<<" "<<root->data;
    }
    zhongxu(root->r);
}
int main()
{
    int n;
    int x;
    while(cin>>n)
    {
        sum=0;
        node *tree = NULL;
        while(n--)
        {
            cin>>x;
            tree = creat(tree,x);
        }
        zhongxu(tree);
        cout<<endl;
    }
    return 0;
}

https://paste.ubuntu.com/p/m8xPTG85WB/
https://paste.ubuntu.com/p/g6cq9gRTMC/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要清空排序二叉树(Binary Search Tree,BST),可以执行以下步骤: 1. 创建一个函数,用于删除二叉树的节点。函数可以使用递归来实现。 2. 在删除函数中,首先检查当前节点是否为空。如果为空,则返回。 3. 如果当前节点不为空,递归地调用删除函数来删除左子树和右子树。 4. 释放当前节点的内存。 5. 在主程序中,调用删除函数,传入根节点来清空整个二叉树。 以下是一个示例代码,用于清空排序二叉树: ```c #include <stdio.h> #include <stdlib.h> struct Node { int data; struct Node* left; struct Node* right; }; // 创建新节点 struct Node* createNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->left = NULL; newNode->right = NULL; return newNode; } // 删除二叉树节点 struct Node* deleteTree(struct Node* node) { if (node == NULL) { return NULL; } // 递归地删除左子树和右子树 node->left = deleteTree(node->left); node->right = deleteTree(node->right); // 释放当前节点的内存 free(node); return NULL; } int main() { struct Node* root = createNode(5); root->left = createNode(3); root->right = createNode(8); root->left->left = createNode(2); root->left->right = createNode(4); root->right->left = createNode(6); root->right->right = createNode(9); // 清空二叉树 root = deleteTree(root); if (root == NULL) { printf("二叉树已清空\n"); } else { printf("二叉树清空失败\n"); } return 0; } ``` 上述代码中,我们创建了一个简单的排序二叉树,并使用 `deleteTree` 函数来清空它。最后,我们检查根节点是否为空来验证二叉树是否已经清空。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值