zoukankan      html  css  js  c++  java
  • 算法10---二叉搜索树之基数树

    算法10---二叉搜索树之基数树

    基数树是用来保存和排列字符串,关于字典序有两条规则:
     
    算法导论中给出这样的图,我们结合图来看
     
    1. 当字符串长度相同时,从左向右逐个字符比较,左边的比右边的小。如011 < 100。
     
    2. 字符串长度不同时,长度长的在字典序中值更大。如100 < 1011。
     
    因此,根结点 < 左子树结点 < 右子树结点;所以我们会用到先序遍历;
     
    我们在基数树中存储位串1011,10,011,100和0;
     
     
     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 typedef struct RadixNode {
     5      struct RadixNode *lchild, *rchild;
     6      char *str;
     7 } RadixNode;
     8 
     9 void radix_insert(RadixNode *node, char *str)
    10 {
    11      int i;
    12      for (i = 0; str[i] != ''; i++) 
    13      {               
    14           if (str[i] == '0')
    15           {
    16                if (node->lchild == NULL)
    17                     node->lchild = (RadixNode *)calloc(sizeof(RadixNode), 1);
    18                node = node->lchild;               
    19           } 
    20           else 
    21           {
    22                if (node->rchild == NULL)
    23                     node->rchild = (RadixNode *)calloc(sizeof(RadixNode), 1);
    24                node = node->rchild;
    25           }               
    26      }
    27      node->str = str;
    28 }
    29 
    30 void radix_preorder_walk(RadixNode *node)
    31 {
    32      if (node != NULL) {
    33           if (node->str != NULL)
    34                printf("%s
    ", node->str);
    35           radix_preorder_walk(node->lchild);
    36           radix_preorder_walk(node->rchild);
    37      }
    38 }
    39 
    40 int main()
    41 {
    42      RadixNode *root = (RadixNode *)malloc(sizeof(RadixNode));
    43      radix_insert(root, "1011");
    44      radix_insert(root, "10");
    45      radix_insert(root, "011");
    46      radix_insert(root, "100");
    47      radix_insert(root, "0");
    48      
    49      radix_preorder_walk(root);
    50 
    51      return 0;
    52 }
     
  • 相关阅读:
    fiddler配置及使用教程
    获取字符串中出现次数最少的字符
    引用数据类型的深拷贝
    jquery一些方法
    常用字体
    图片模拟
    返回上一页并刷新
    移动端网页调试神器
    input一些限制
    使用transform后z-index失效的解决方法
  • 原文地址:https://www.cnblogs.com/tao-alex/p/5913830.html
Copyright © 2011-2022 走看看