开发者社区> 问答> 正文

二叉树,如何设计一个算法,使得交换左右子树。要求非递归算法。

二叉树,如何设计一个算法,使得交换左右子树。要求非递归算法。

展开
收起
知与谁同 2018-07-17 15:37:54 2083 0
2 条回答
写回答
取消 提交回答
  • 不是很简单吗。
    childtype x=a.lchild;
    a.lchild=a.rchild;
    a.rchild=x;
    2019-07-17 22:55:05
    赞同 展开评论 打赏
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
      递归算法:
      void exchange(BitTree T){
       BitNode p;
      if(T->lchild==null && T->rchild==null)
       return;
       else{
       p=T->lchild;
       T->lchild=T->rchild;
       t->rchild=P;
       }
      if(T->lchild){
      exchange(T->lchild);
      }
      if(T->rchild){
      exchange(T->rchild);
      }
      }
      非递归算法
      使用栈作为存储结构
      void exchange(BitTree T){
      定义并初始化栈
      Stack s;
      InitStack(s);
      BitNode p,temp;
      p=T;
      while(p && !EmptyStack(s)){
      if(p){
      push(p);
      p=p->lchild;
      }
      else{
      temp=p->lchild;
      p->lchild=p->rchild;
      p->rchild=temp;
      p=p->lchild;
      }
      }
      }
    2019-07-17 22:55:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
数据+算法定义新世界 立即下载
袋鼠云基于实时计算的反黄牛算法 立即下载
Alink:基于Apache Flink的算法平台 立即下载