`
chriszeng87
  • 浏览: 717566 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二叉树中所有节点的左右子树相互交换 递归与非递归程序

阅读更多
//将二叉树中所有节点的左右子树相互交换
[cpp] view plaincopy
 
  1. BiNode* Exchange(BiNode* T)  
  2. {  
  3.  BiNode* p;  
  4.  if(NULL==T || (NULL==T->lchild && NULL==T->rchild))  
  5.   return T;  
  6.  p = T->lchild;  
  7.  T->lchild = T->rchild;  
  8.  T->rchild = p;  
  9.  if(T->lchild)  
  10.  {  
  11.   T->lchild = Exchange(T->lchild);  
  12.  }  
  13.  if(T->rchild)  
  14.  {  
  15.   T->rchild = Exchange(T->rchild);  
  16.  }  
  17.  return T;  
  18. }  
 
//将二叉树中所有节点的左右子树相互交换
//不使用递归
[cpp] view plaincopy
 
  1. void NonRecursive_Exchange(BiNode* T)  
  2. {  
  3.  Stack s;  
  4.  BiNode* p;  
  5.  if(NULL==T)  
  6.   return;  
  7.  InitStack(&s);  
  8.  Push(&s,T);  
  9.  while(!isEmpty(&s))  
  10.  {  
  11.   T = Pop(&s);  
  12.   p = T->lchild;  
  13.   T->lchild = T->rchild;  
  14.   T->rchild = p;  
  15.    
  16.   if(T->rchild)  
  17.    Push(&s,T->rchild);  
  18.   if(T->lchild)  
  19.    Push(&s,T->lchild);   
  20.  }   
  21.  DestroyStack(&s);   
  22. }  
分享到:
评论

相关推荐

    c语言 二叉树应用:创建、递归非递归遍历、计算结点、分支、交换子树

    可实现: 输入相应元素,用先序创建二叉树(无元素处用“#”) 递归先序遍历二叉树: ... 交换二叉树的左右子树: 二叉树已左右交换。 递归先序遍历二叉树: 递归中序遍历二叉树: 递归后序遍历二叉树:

    二叉树的创建、遍历、叶子节点计算及线索树等完整程序

    二叉树的创建、遍历、以及左右子树交换,非递归遍历,叶子节点计算及线索树等完整程序

    二叉树的各种遍历 递归非递归

    数据结构中二叉树的各种遍历,先序、中序、后序、层次、节点层次判断、交换左右子树、相似等的递归与非递归算法的源代码。

    二叉树实现(C++版本)

    数据结构实习。实现了二叉树的前序递归创建,非递归层次创建,...swapTree方法可以交换二叉树的左右子树。原创,后续还会推出二叉树的Qt版本,可以图形化显示二叉树,喜欢的朋友可以关注我哦(^_^)如有任何问题请私信~

    二叉树编码

    编程实现二叉树的建立,先序、中序、后序、层序遍历(非递归方法),二叉树的高度、交换左右子树,统计叶子节点的数目,判断是否为完全二叉树,用括号的形式输出树等功能。 [基本要求] 程序输出菜单界面,菜单包含8...

    二叉树的应用

     编程实现二叉树的建立,先序、中序、后序、层序遍历(递归和非递归方法),二叉树的高度、繁茂度,交换左右子树,统计叶子节点的数目,判断是否为完全二叉树,按树的形态在屏幕上打印输出; [基本要求] (1) 从...

    数据结构与算法

    1. 掌握二叉树的结构特征,以及各种存储结构的特点及适用范围。...6. 交换二叉树的左右子树。 7. 借助队列实现二叉树的层次遍历。 8. 在主函数中设计一个简单的菜单,调试上述算法,要求1-3必做,4-7为选做。

    平衡二叉树C实现源码(带详细注释)

    //实现结点左右子树的交换 int TreeDepth(BSTree T); //实现二叉树深度的求值 int TotalNodeNum(BSTree T); //实现二叉树总结点数的求值 int LeafNodeNum(BSTree T); //实现二叉树叶子结点数的求值 Status ...

    erchashu.rar_二叉树 打印_打印二叉树

    二叉树的建立,先序、中序、后序、层序遍历(递归和非递归方法),二叉树的高度、繁茂度,交换左右子树,统计叶子节点的数目,判断是否为完全二叉树,按树的形态在屏幕上打印输出;

    头歌数据结构二叉树的二叉链表存储及基本操作

    头歌数据结构二叉树的二叉链表存储及基本操作 第1关:先序遍历创建二叉链表存储的二叉树及遍历操作 第2关:计算二叉树的高度、总节点个...第5关:非递归实现二叉树左右子树交换 第6关:非递归实现二叉树的中序遍历 稳过

Global site tag (gtag.js) - Google Analytics