typedef struct BiTree{
struct BiTree* lchild;
struct BiTree* rchild;
int data;
}BiTree;
typedef struct Queue{
int front;
int rear;
BiTree* data[MaxSize];
}Queue;
void CreateTree(BiTree* &node){
int data;
cout<<"please input data: "<<endl;
cin>>data;
if (data != -1) {
node = new BiTree();
node->data = data;
CreateTree(node->lchild);
CreateTree(node->rchild);
}
}
int deepth(BiTree* tree){
if (tree == NULL) {
return 0;
}
int left = deepth(tree->lchild);
int right = deepth(tree->rchild);
return left>right?left+1:right+1;
}
int deepthNoRecur(BiTree* tree){
if(tree == NULL){
return 0;
}
BiTree* bit;
Queue queue;
int level = 0;
queue.front = 0;
queue.rear = 0;
queue.data[queue.rear] = tree; // 根结点入栈
queue.rear = (queue.rear + 1) % MaxSize;
while (queue.front!=queue.rear) {
level++;
int size = (queue.rear-queue.front+MaxSize) % MaxSize;
while (size--) {
bit = queue.data[queue.front++];
if (bit->lchild!=NULL) {
queue.data[queue.rear] = bit->lchild;
queue.rear = (queue.rear + 1) % MaxSize;
}
if (bit->rchild!=NULL) {
queue.data[queue.rear] = bit->rchild;
queue.rear = (queue.rear + 1) % MaxSize;
}
}
}
return level;
}
计算二叉链表存储的二叉树的深度(递归与非递归)
最新推荐文章于 2023-11-03 10:47:10 发布