16 - 12 - 22 二叉树的基本操作
来源:互联网 发布:java反编译工具 编辑:程序博客网 时间:2024/05/16 10:38
typedef struct node{ struct node *lchild,rchild; DataType data;}*BiTree,BiNode;BiTree *T;/*初始化二叉树*/void InitBiTree(BiTree *T){ *T = NULL;} /*先序递归创建二叉树*/void CreateBiTree(BiTree *T){ char ch; scanf("%c",&ch); if(ch == '#') *T = NULL; //这是Create函数的结尾。 else{ CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); }}/*二叉树的销毁*/void DestroyBiTree(BiTree *T){ if(*T) { if((*T)->lchild) DestroyBiTree((*T)->lchild); if((*T)->rchild) DestroyBiTree((*T)->rchild); free(*T); *T = NULL; //1、 不加行不行? }}//不行,T是指向这一片空间的,这片空间被释放后,//还可以被别的项目利用,如果T仍然指向这里,会导致越界。//初始化置空,使用完毕置空这是杜绝野指针的基本原则!/*二叉树的左插入*//*p指向二叉树的某个结点,将子树 c 左插入p指向的的结点,p原来的左子树变成c的右子树。*/int InsertLeftChild(BiTree p, BiTree c){ if(p){ c->rchild = p->lchild; p->lchild = c; return 1; } return 0; //说明:p = NULL}/*二叉树的右插入*/int InsertRightChild(BiTree p,BiTree c){ if(p){ c->rchild = p->rchild; p->rchild = c; return 1; } return 0;}/*返回二叉树结点元素值为 e 的指针。MAXSIZE是树的最大结点个数*/BiTree BiTreePoint(BiTree T,DataType e){ BiTree Q[MAXSIZE]; // 指针数组 int front = 0,rear = 0; BiNode *p; if { Q[rear] = T; //入栈 rear++; while(front != rear ) { p = Q[front]; front++; if(p->data = e) return p; if(p->lchild) Q[rear++] = p->lchild; if(p->rchild) Q[rear++] = p->rchild; } } return NULL;}/*因为二叉树没有线索化,所以我们要考虑一种方法能走遍每(every)一个子节点自然就需要指针分别向左指,再向右指。然后分别将向左指的指针入栈,向右指的指针入栈这两个指针再分别重复以上故事。*//*返回数据域值为e的结点的左(右)孩子的数据域值*/DataType LeftChild(BiTree *T){ BiTree p; if(T){ p = BiTreePoint(T,e); if( p && p->lchild) return p->lchild->data; } return 0;}DataType RightChild(BiTree *T){ BiTree p; if(T){ p = BiTreePoint(T,e); if( p && p->rchild) return p->rchild->data; } return 0;}/*删除二叉树的 p 所指的左(右)子树*/int DeleteLeftChild(BiTree p){ if(p){ DestroyBiTree(&(p->lchild)); return 1; } return 0;}int DeleteRightChild(BiTree p){ if(p){ DestroyBiTree(&(p-rchild)); return 1; } return 0;}
1 0
- 16 - 12 - 22 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 二叉树的基本操作
- 详解js中构造流程图的核心技术JsPlumb
- css3前缀
- Java类加载器
- MVC
- CSS制作各种三角形写法
- 16 - 12 - 22 二叉树的基本操作
- okHttp框架原理
- C++调用Python脚本碰到的问题及解决方法【更新中】
- height,min-height与页面布局
- Ajax请求在后台已执行,但是前台显示404
- List中对象按照属性时间升序排序
- 安卓大话设计模式
- spring 的4种事务管理(1种编程式+3种声明式)
- 【算法面试题】交换排序问题