实训4--二叉树的深度与结点
5页1、实验实训报告(四)课程名称: 数据结构与算法实验专业班级: 实验实训: 二叉树的深度与结点组 别: 第五组姓 名: 成 员: 1. 试编写递归算法,求二叉树中以元素值为x的结点为根的子树深度。#includeusing namespace std;typedef int TElemType;typedef struct BitNode TElemType data; struct BitNode *lchild, *rchild; BitNode, *BiTree;/创建二叉树void create_BiTree(BiTree &T) int x; cinx; if(x=0) T=NULL; else T=new BitNode; T-data=x; create_BiTree(T-lchild); create_BiTree(T-rchild); /*返回根为T的树深度 */int getDepth(BiTree T) int m, n; if(T) m = getDepth(T-lchild); n = getDepth(T-rchild); return m = n ? m +
2、1: n + 1; else return 0;int Depthx(BiTree T, TElemType x)/* 求二叉树中以值为x的结点为根的子树深度 */ int m, n; if(T) if(T-data = x) return getDepth(T); else m = Depthx(T-lchild, x); n = Depthx(T-rchild, x); return m n ? m : n; else return 0; int main()int t;BiTree root;create_BiTree(root);cout请输入查找的节点数值t;coutDepthx(root,t);return 0;输出结果如下:2. 试编写在二叉树中查找值为x的结点的算法。#include #include typedef struct node int data; struct node *left,*right;BiTree;void insert(BiTree *t,BiTree *s) if(*t=NULL) *t=s;else if(s-data=(*t)-data
3、) return; else if(s-datadata) insert(&(*t)-left,s); else if(s-data(*t)-data) insert(&(*t)-right,s);void creat(BiTree *t1) int x; BiTree *s; printf(please input number:n); scanf(%d,&x); while(x!=0) s=(BiTree*)malloc(sizeof(BiTree); s-data=x; s-left=NULL; s-right=NULL; insert(t1,s);s=NULL;printf(please input number(0 is end):n);fflush(stdin); scanf(%d,&x);int search(BiTree *b,int x)if(b=NULL) return NULL;elseif(b-data=x)return b-data;elseif(xdata)printf(%d,b-data);return search(b-left,x);elseprintf(结点是:%d,b-data);return search(b-right,x);int main() BiTree *t=NULL; int x; creat(&t); printf(input:n); scanf(%d,&x); search(t,x);
《实训4--二叉树的深度与结点》由会员 y****g分享,可在线阅读,更多相关《实训4--二叉树的深度与结点》请在金锄头文库上搜索。
2023-04-04 88页
2023-01-27 39页
2023-01-27 31页
2023-01-27 26页
2023-01-27 33页
2023-01-27 30页
2023-01-27 35页
2023-01-17 24页
2023-01-17 32页
2023-01-17 39页