建立树的两种方法以及用广义表显示树

一种是先序建树,一种是层序建树(自己瞎起的名字,呵呵)

1.先序建树(string用来以广义表形式显示树)

void CreateBTREE(BTREE & BT ,string & lists)
{
    cout <<"\n请输入节点信息(‘#’表示为空)\n" ;
    type data ;
    cin >> data  ;
    lists+=data ;
    if(data == '#')
    {
        BT = NULL ;
    }
    else
    {
        BT = new node ;
        BT->data = data ;
        lists+="("  ;
        cout <<"\n输入"<<data <<"的左节点:\n" ;
        CreateBTREE(BT->lChild,lists) ;
        lists+="," ;
        cout <<"\n输入"<<data<<"的右节点:\n" ;
        CreateBTREE(BT->rChild,lists) ;
   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C语言中,建立一个二叉排序(Binary Search Tree,BST)通常会涉及到节点结构定义、插入操作以及广义表表示。首先,我们需要定义一个二叉节点的结构,包含键值(key)、左子和右子指针。这里是一个基础的节点定义: ```c typedef struct TreeNode { int key; // 节点的键值 struct TreeNode* left; // 左子指针 struct TreeNode* right; // 右子指针 } TreeNode; ``` 接下来是创建二叉排序的基本插入函数,这个函数会按照二叉搜索的规则确保插入后的仍然有序: ```c TreeNode* insertNode(TreeNode* root, int key) { if (root == NULL) { // 如果根节点为空,直接插入 return (TreeNode*)malloc(sizeof(TreeNode)); root->key = key; root->left = NULL; root->right = NULL; } else if (key < root->key) { root->left = insertNode(root->left, key); // 递归插入左子 } else { root->right = insertNode(root->right, key); // 递归插入右子 } return root; } ``` 对于广义表(Generalized List)的表示,二叉通常不直接对应于广义表,因为广义表更适用于递归或链表形式。但是你可以用层次遍历的方式将二叉转换为广义表,比如使用前序遍历(根-左-右),得到的结果类似于 `[key1, [key2, [key3, ...]], key4, ...]` 的形式。 如果你想要在C语言中生成这样的广义表,你需要写一个函数来执行前序遍历并将其存储在数组或链表中。这可能涉及递归,具体实现会比上述代码稍微复杂一些。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值