二叉搜索树 hdu3791
发布日期:2021-05-16 17:25:06 浏览次数:14 分类:精选文章

本文共 721 字,大约阅读时间需要 2 分钟。

一款基于ASCII字符的二叉搜索树(BST)建立与比较工具

本程序设计用于验证给定字符串是否能唯一确定二叉搜索树结构。具体实现方式如下所示:

  • 基于ASCII字符建立二叉搜索树
  • 程序中采用字符数字来代替常规BST节点值,其中'-'号字符用于表示BST中的"终止节点"。在代码中,节点的左子树通过编号2*root来表示,右子树则通过2*root +1来表示。

    1. 树的插入逻辑
    2. 插入的核心逻辑是找到合适的位置,把新节点插入到正确的子树中。我们从根节点(root=1)开始检查:

      • 如果当前节点的值小于要插入的值,则左插入,即进入左子树(root*2)
      • 否则,右插入,即进入右子树(root*2+1)

      值插入后,目标节点的位置保存在rt变量中 值插入后,目标节点的位置保存在rt变量中 插入完成后,节点值赋值给对应位置

      1. 树的构建逻辑
      2. 主函数build接收一个字符数组,逐个字符插入树中,首先将第一个字符作为根节点,其余字符按顺序依次插入左或右子树中,与插入函数insert配合使用

        1. 核心逻辑
        2. 主要功能是对两个字符串生成的BST树进行比较。对于长度为n的两个字符串:

        3. 先从标准输入中读取n
        4. 执行建树操作
        5. 逐个字符串进行比较
        6. 遍历整个数组,找到任何一个位置,树1和树2的值不一致即可判定为"NO"
        7. 如果所有节点均一致,则输出"YES"
        8. 举例: 输入字符串为"123"和"132" tree1的结构: 1 /

          2 3 / 2 tree2的结构: 1 /
          3 2
          3

          逻辑判断过程:

          • 取第一个节点都为1,继续比较右节点
          • tree1右节点为3,tree2则为2,产生差异,输出"NO"

          这个程序可以作为基础验证工具,帮助开发人员快速判断不同字符串对应树结构是否一致

    上一篇:逆序数
    下一篇:划分树

    发表评论

    最新留言

    表示我来过!
    [***.240.166.169]2025年05月10日 21时44分51秒