当前位置:   article > 正文

多叉树转二叉树(左孩子右兄弟表示法)_多分支数转化二叉数(左孩子右兄弟)

多分支数转化二叉数(左孩子右兄弟)

引入:

为了将多叉树的结点间“孩子兄弟”的信息以二叉树的形式保存下来,我们需要借助二叉树的左右两个子节点作为区分“孩子兄弟”的标记。

实例:

 

         右图中结点 1 的左子节点是 4 表示 4 是 1 的 “孩子”, 4 的 左子节点是 7 表示 7 是 4 的左子节点,接着 4 的右子节点是 3 表示 3 是 4 的兄弟,即 1 的子节点,以此类推……不过要注意的是根节点 1 的左子节点可以是它“孩子”中的任何一个,没有要求,即不一定要和 4 相连,也可以和 2、3 中的其中一个相连。

实现方法:

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. struct BT{
  5. int l;
  6. int r;
  7. }tree[100];
  8. int main(){
  9. memset(tree, 0, sizeof(tree)); // 初始化
  10. int m, a, b;
  11. cin >> m; // 有 m 条信息
  12. for (int i = 1; i <= m; i++){
  13. cin >> a >> b; // a 是 b 的子节点
  14. if (!tree[b].l) // b 的左子节点还有位置
  15. tree[b].l = a;
  16. else{ // b 的左子节点没有位置了,a 可以存在 b 的左子节点的右子节点上
  17. int tmp = b;
  18. while (tree[tmp].r) tmp = tree[tmp].r; // 循环找出空位,存放a;
  19. tree[tmp].r = a;
  20. }
  21. }
  22. return 0;
  23. }

        好了,以上就是本期文章的全部内容了。。。 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/692699
推荐阅读
相关标签
  

闽ICP备14008679号