树
幸运数字-12
计算机技术专业在读
展开
-
Btree相关算法完整版
#include<stdio.h>#include<stack>#include<stdlib.h>#include<iostream>using namespace std;typedef char ElemType;typedef struct BNode { ElemType data; struct BNode *lchild,*rchild;} BNode,*BiTree;stack<BiTree>S;BiTr...原创 2021-12-07 16:41:56 · 327 阅读 · 0 评论 -
中序二叉树第K元素的值
int cnt=0;int search_k(BiTree T,int k){ if(T) { search_k(T->lchild,k); if(++cnt==k) { return T->data; } search_k(T->rchild,k); }}原创 2021-12-03 15:34:07 · 92 阅读 · 0 评论 -
统计树中度为一的结点
非递归int Level(BiTree T){ int n=0 //num统计度为1的结点个数 if(T){ QueueInit(Q);QueueIn(Q,T); //Q是以二叉树结点指针为元素的队列 while(!QueueEmpty(Q)) { p=QueueOut(Q); //出队,访问结点 if(p->lchild && !p->rchild || !p->lchild && p->rchild) ..原创 2021-11-09 22:37:04 · 443 阅读 · 0 评论 -
查找二叉树某父结点
typedef struct BiTNode{ ElemType data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;BiTNode *parent(BiTree T,ElemType x){ BiTNode *ans; if(T==NULL) return NULL; if(T->lchild==NULL&&T->rchild==NULL) return NULL else { if.原创 2021-11-08 21:20:00 · 337 阅读 · 0 评论 -
二叉排序树的构造
存储结构typedef struct BSTNode{ ElemType data; Struct *lchild,*rchild;}BSTNode,*BSTree;插入//二叉排序树的创建int BST_Insert(BiTree &T,ElemType k){ if(T==NULL) { T=(BiTree)malloc(sizeof(BSTNode)); T->data=k; T->lchild=T->rchild=N.原创 2021-11-07 20:51:53 · 571 阅读 · 0 评论 -
ChangeBiTreechilds
void change(BiTree &T){ BiTree t; if(T->lchild==NULL&&T->rchild==NULL) return; else { t=T->lchild; T->lchild=T->rchild; T->rchild=t; } change(T->lchild); change(T->rchild);}原创 2021-11-06 22:52:21 · 77 阅读 · 0 评论 -
判断两棵二叉树是否相等
int judgebitree(bitree *bt1,bitree *bt2)//判断两个二叉树是否相同。{ if (bt1==0 && bt2==0)//两棵树对应位置都为空返回1 return 1; else if (bt1==0 || bt2==0 ||bt1->data!=bt2->data) //两棵树的当前节点只有一个为空或者两棵树的当前节点的值不同。 return 0; else return judgebitree.原创 2021-11-05 16:13:56 · 585 阅读 · 0 评论 -
二叉树的宽度、高度、叶子数、复制
采用层次遍历的方法int width(BiTree T){ if(T==NULL) return 0; else { BiTree Q[]; //Q队列,元素为二叉树结点指针 front=1;rear=1; last=1; //同层最右结点在队列中的位置 t=0,maxw=0; //t记录局部宽度 Q[rear]=T; while(front<=last) { p=Q[front++]; t++; // 同层元素数加一 if(p原创 2021-10-29 19:58:22 · 223 阅读 · 0 评论 -
层次遍历二叉树、中序非递归
void LevelorderTraversal( BinTree BT ){ BinTree p; BinTree Q[100];//足够大 int head=0,rear=0; if(BT){ Q[rear++]=BT; while(rear!=head){ p=Q[head++]; printf(" %c",p->Data); if(p->Left.原创 2021-10-29 20:04:44 · 111 阅读 · 0 评论 -
判断二叉树是否为二叉排序树
int judgetree(BiTree T){ while(T){ if(T->lchild!=NULL&&T->lchild->data>T->data) return -1; if(T->rchild!=NULL&&T->rchild->data<T->data) return -1; judgetree(...原创 2021-10-27 20:31:21 · 336 阅读 · 6 评论 -
求某结点在数中的层次
typedef struct BTNode{ int data; struct BTNode *lchid,*rchild; }*BiTree;int level=0;void xlevel(Bitree T,int x){ while(T) { level++; if(x==T->data) return; else if(x>T->data) xlevel(T->rchild,x); else xlevel(T->lchil.原创 2021-11-03 21:21:21 · 154 阅读 · 0 评论 -
统计二叉树结点总数
如果是空树,则结点数为0否则,结点数为左子树节点数加右子树结点数加1int node(BiTree T){ if(T==NULL) return 0; else return node(T->lchild)+node(T-rchild)+1;}原创 2021-11-02 17:49:48 · 1152 阅读 · 0 评论 -
统计二叉树各结点值的和
void sum(BiTree T,int &s){ while(T) { s=s+T->data; sum(T->lchild,s); sum(T->rchild,s); } }原创 2021-11-01 21:54:27 · 611 阅读 · 2 评论