關於資料結構中二叉樹

2021-08-19 18:07:24 字數 3039 閱讀 5072

#include

#include

#include

typedef char element;

typedef struct bitnode

bitnode,*bitree;

struct queuenode

;typedef struct queuenode queuenode;

typedef queuenode * queuenodeptr;

///佇列的

void enqueue(queuenodeptr * headptr, queuenodeptr * tailptr, bitree value);

int isemptyqueue(queuenodeptr headptr);

void dequeue(queuenodeptr*headptr,queuenodeptr * tailptr);

bitree front(queuenodeptr * headptr,queuenodeptr * tailptr);

void createbitree(bitree *t);

void printbitreepre(bitree t);

void destroybitree(bitree *t);

int isempty(bitree t);

int similarity(bitree t1,bitree t2);

void getkvalue(bitree t,int count);

int getleaf(bitree t);

void changetree(bitree * t1);

void printbitreebyfloor(bitree t);

int judgeabsolute(bitree t);

bitree front(queuenodeptr * headptr,queuenodeptr * tailptr);

void printtree(bitree boot,int nlayer);

void createtreebypremid(bitree *t);

void trulycreatebypremid(bitree*t,char pre,char mid);

int main()

//得到二叉樹的高度

int height(bitree t)

else

}void getparent(bitree t,char value)

else

if(t->lchild)

}if(t->rchild)

}getparent(t->lchild,value);//從左子樹找

if(flag == 0)}}

int isemptyarray(char s)

//建立二叉樹通過前序和中序

void createtreebypremid(bitree *t)

//把前序分為兩半

void subpre(char pre,int leftlen,int rightlen,char left,char right)

}void createbitree(bitree *t)

else

}void printbitreepre(bitree t)

}void destroybitree(bitree *t)

}int isempty(bitree t)

int similarity(bitree t1,bitree t2)

}void getkvalue(bitree t,int count)

else}}

int getleaf(bitree t)

else

}return count;

}void changetree(bitree * t1)

}void printbitreebyfloor(bitree t)

if(!isempty(q->rchild))

dequeue(&headptr,&tailptr);

//printf("is empty!  %d\n",isemptyqueue(headptr));}}

}//得到前面的值

bitree front(queuenodeptr * headptr,queuenodeptr * tailptr)

void enqueue(queuenodeptr * headptr, queuenodeptr * tailptr, bitree value)

else/*insert node at end*/

*tailptr = newptr;

}/*end if*/

else

/*end else*/

}/*end function enqueue*/

/*delect node from head to tail*/

void dequeue(queuenodeptr * headptr,queuenodeptr * tailptr)

free(tempptr);//free the temp

// return value;//return the value

}//end function dequeue

int isemptyqueue(queuenodeptr headptr)

//判斷完全二叉樹

int judgeabsolute(bitree t)

if(!isempty(q->lchild))

if(!isempty(q->rchild))

if(isempty(q->lchild)&&!isempty(q->rchild))//如果左結點為空,右結點不為空

else if( isempty(q->rchild) )//兩個都是空的或者右邊是空的,有待商榷

dequeue(&headptr,&tailptr);}}

return 1;

}void printtree(bitree boot,int nlayer)  //按豎向樹狀列印的二叉樹 //

}

資料結構中二叉樹相關操作

二叉樹是一種重要的資料結構,關於二叉樹的相關操作尤為重要,其中主要操作大概分為 建樹,遍歷,返回二叉樹的相關引數。pragma once include queue.h include stack.h include include include include define max x,y x ...

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...

《資料結構》 二叉樹

二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...