请编写一个递归算法,将二叉树中所有结点的左、右子树相互交换。

如题所述

Status BiTree_Revolute(BiTree T)//左右子树交换
{
if(!T) return OK;
BitNode *temp;
if(T->lchild!=NULL&&T->rchild!=NULL)
{
temp=T->lchild;
T->lchild=T->rchild;
T->rchild=temp;
}
BiTree_Revolute(T->lchild);
BiTree_Revolute(T->rchild);
return OK;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2018-05-14
手抖点了踩orz

交换二叉树的所有节点的左右子树算法(C语言)
二叉树最好使用递归的算法,假设二叉树节点定义如下:typedef struct node{ int a;node* left;node* right;};可以定义交换左右子树的函数如下:void changeleaf(node* anode){ if(anode!=0){ node* tnode=anode->left;anode->left=anode->right;anode->right=tnode;changeleaf(anode->left);cha...

编写递归算法,计算二叉树中叶子结点的数目。(C++)急!!!
using namespace std;typedef struct TNode\/\/二叉树结构 { char nodeValue;\/\/结点的值 TNode* left;\/\/左子树 TNode* right;\/\/右子树 }*BiTree;void CreateBiTree(BiTree &T)\/\/中序遍历方式创建二叉树 ,输入#代表该结点为空 { char nodeValue;cin>> nodeValue;if(nodeValue!='#')\/\/结点非...

编写一个复制一棵二叉树的递归算法……
void CopyTree(BiTree S,BiTree &T){ if (!s) T=NULL;else{ CopyTree(S->lchild,lptr);\/\/复制左子树到lptr CopyTree(S->rchild,rptr);\/\/复制右子树到rptr T=(BiTree)malloc(sizeof(BiNode));T->data=S->data;T->lchild=lptr;T->rchild=rptr;}\/\/else }\/\/CopyTree hiahia,同学...

写一个算法,交换一棵二叉树T的左右子树,要求使左子树根结点的关键字k小...
\/\/递归算法(更像伪代码)void swap(BT root){ if(root){ if(root.l&&root.r&&(*root.l).key>(*root.r).key){ BT p=(*root).l;(*root).l=(*root).r;(*root).r=p;} swap((*root).l);swap((*root).r);} }

...设计一个递归算法设计一棵给定二叉树的所有结点数
int Count(Bitree T)\/\/ 根结点指针T { int n = 0;if (T != NULL)n = 1 + Count(T->leftchild) + Count(T->rightchild);return n;}

编写递归算法,求二叉树的结点个数和叶子数
return(0);} 法二:int LeafCount_BiTree(Bitree T)\/\/求二叉树中叶子结点的数目 { if(!T) return 0; \/\/空树没有叶子 else if(!T->lchild&&!T->rchild) return 1; \/\/叶子结点 else return Leaf_Count(T->lchild)+Leaf_Count(T->rchild);\/\/左子树的叶子数加 上右子树的叶子数 }\/...

设二叉树的存储结构为二叉链表,编写有关二叉树的递归算法:
(1)统计二叉树中度为1的结点个数。(2)统计二叉树中度为2的结点个数。(3)统计二叉树中度为0(叶结点)的结点个数。(4)统计二叉树的高度。(5)统计二叉树的宽度,即在二叉树的各层上,具有结点数最多的那一层上的结点总数。(6)从二叉树中删... 展开 972630969...

编写一个递归算法,统计并返回以BT为树根指针的二叉树中的叶子结点的个...
当x=NULL f(x)=0;当x左右子树为空 f(x)=1;其他 f(x)=f(bt->lchild)+f(bt-rchild)--- int Count(BTreeNode *BT){ int l,r;if(BT==NULL) return 0;else if(BT->Lchild==NULL&&BT->Rchild==NULL) return 1;else { l=Count(BT->Lchild);r=Count(BT->Rchild);re...

数据结构二叉树的基本操作~~~
用递归的方法实现以下算法:1.以二叉链表表示二叉树,建立一棵二叉树;2.输出二叉树的前序遍历结果;3.输出二叉树的中序遍历结果;4.输出二叉树的后序遍历结果;5.统计二叉树的叶结点个数;6.统计二叉树的结点个数;7.计算二叉树的深度。8.交换二叉树每个结点的左孩子和右孩子;include <...

求统计二叉树叶子结点数的递归算法
1、如果它没有子节点,那么它就是叶子节点。2、如果它有子节点,那么它的叶子节点数量 = 左子树叶子节点数量 + 右子树叶子节点数量。算法代码:unsigned int getLeafCount(struct node* node){ if(node == NULL) return 0; if(node->left == NULL && node->right==NULL) return 1;...

相似回答