大点 20023
数据结构作业 2002 年 第六章 树
643编写递归算法,将二叉树中所有结点的左右子树相互交换。 void change( Bitree*T)/根据先根遍历 i BiTree "p if(T p=T->lchild T->lchild= T->rchild T->rchild=p change(T->lchild) change(T->rchild)
6.43 编写递归算法,将二叉树中所有结点的左右子树相互交换。 void change(BiTree *T) //根据先根遍历 { BiTree *p; if (T) { p=T->lchild; T->lchild= T->rchild; T->rchild=p; change(T->lchild); change(T->rchild); }
643编写递归算法,将二叉树中所有结点的左右子树相互交换。 void change( BITree*T)∥根据中根遍历 i BiTree "p if(T 错误算法,导致不能访问右 子树的结点 change(T->lchild) p=T->lchild T->lchild= T->rchild T->rchild=p change(T->rchild)
6.43 编写递归算法,将二叉树中所有结点的左右子树相互交换。 void change(BiTree *T) //根据中根遍历 { BiTree *p; if (T) { change(T->lchild); p=T->lchild; T->lchild= T->rchild; T->rchild=p; change(T->rchild); } 错误算法,导致不能访问右 子树的结点
643编写递归算法,将二叉树中所有结点的左右子树相互交换。 void change( BiTree*T)/根据后根遍历 i BiTree "p if(T change(T->lchild) change(T->rchild) p=T->lchild T->lchild= T->rchild T->rchild=p
6.43 编写递归算法,将二叉树中所有结点的左右子树相互交换。 void change(BiTree *T) //根据后根遍历 { BiTree *p; if (T) { change(T->lchild); change(T->rchild); p=T->lchild; T->lchild= T->rchild; T->rchild=p; }
644编写递归算法,求三叉树中以元素值为x的结点为根的子树的 深度。 int dep( BiTree*r; Elem Type x,int*h)∥根据后根遍历 i int h1, h2 if( T) f hl=dep(t->lchild, x, h); h2=dep(t->rchild, x, h) if (T->data==)*h=h1h2? h1+1: h2+ return hI>h2? h1+1: h2+1 main i hight=0: de lep(root, x, &hight
6.44 编写递归算法,求二叉树中以元素值为x的结点为根的子树的 深度。 int dep(BiTree *T,ElemType x, int *h) //根据后根遍历 { int h1,h2; if (T) { h1=dep(T->lchild , x , h); h2=dep(T->rchild ,x , h); if (T->data==x) *h=h1>h2? h1+1 :h2+1; return h1>h2? h1+1 :h2+1; } main() { hight=0; dep(root,x,&hight);