当前位置: 首页> 娱乐> 八卦 > 二叉树的广度优先遍历和题目

二叉树的广度优先遍历和题目

时间:2025/7/16 7:18:31来源:https://blog.csdn.net/cleveryuoyuo/article/details/142337918 浏览次数:0次

二叉树广度优先遍历利用队列 。

typedef char BTDataType;
typedef struct BinaryTreeNode
{BTDataType data;struct BinaryTreeNode* left;struct BinaryTreeNode* right;
}BTNode;
typedef BTNode* QDataType;// 链式结构:表示队列 
typedef struct QueueNode 
{ struct QueueNode* next; QDataType data; 
}QueueNode;
// 队列的结构 两个指针分别记录链表的头和尾
typedef struct Queue 
{ QueueNode* head; QueueNode* tail; 
}Queue;
// 广度优先遍历 1.先把根入队列 2.出队头的数据,把他的下一层入进去
// 特点:借助队列的先进先出性质,上一层出的时候带入下一层 队列的代码参考前面的博客
void LevelOrder(BTNode* root)
{Queue q;QueueInit(&q);if(root)QueuePush(&q, root);while(!QueueEmpty(&q)){BTNode* front = QueueFront(&q); QueuePop(&q);printf("%d ",front->left);if(front->left)QueuePush(&q, front->left);if(front->right)QueuePush(&q, front->right);}QueueDestory(&q);
}
// 判断二叉树是否为完全二叉树 完全二叉树按层序走,节点是连续的,当出到NULL之后后面全是NULL就是完全二叉树,
// 如果后面有非空,那么就不是,说明节点层序走,非空节点不连续
bool BinaryTreeComplete(BTNode* root)
{Queue q;QueueInit(&q);if(root)QueuePush(&q, root);while(!QueueEmpty(&q)){BTNode* front = QueueFront(&q);QueuePop(&q);if(front == NULL){break;}QueuePush(root->left);QueuePush(root->right)l}while(!QueueEmpty(&q)){BTNode* front = QueueFront(&q);QueuePop(&q);if(front)return false;}QueueDestory(&q);return true;
}
// 创建节点
BTNode* CreateTreeNode (BTDataType x)
{BTNode* n1 = (BTNode*)malloc(sizeof(BTNode));n1->data = x;n1->left = NULL;n1->right = NULL:return node;
}
int main()
{// 手动连接上图中的树BTNode* A = CreateTreeNode('A');BTNode* B = CreateTreeNode('B');BTNode* C = CreateTreeNode('C');BTNode* D = CreateTreeNode('D');BTNode* E = CreateTreeNode('E');BTNode* F = CreateTreeNode('F');A->left = B;A->right = C;B->left = D;C->left = E;c->right = F;// 二级做法BinaryTreeDestory(&A);// 一级做法BinaryTreeDestory(A);A = NULL;
}

题目
单值二叉树
在这里插入图片描述

二叉树的前序遍历:用C语言做题,需要创建数组,首先确定数组大小,遍历一遍得到个数,然后用子函数进行递归,不然用主函数递归每次都需要创建数组的操作。对于i需要传地址,因为当递归返回之后,不传地址的情况下,i会倒退到之前没有++的情况,导致给数组放值会混乱
在这里插入图片描述

相同的树:都同时走到空的 要返回真。如果有一个为空一个不为空则返回假。如果两个值不相同返回假。这三个条件都是终止条件。值如果相同不用管相当于是往下走的进行条件。
在这里插入图片描述

关键字:二叉树的广度优先遍历和题目

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: