102. 二叉树的层序遍历

给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)

二叉树:[3,9,20,null,null,15,7],

C语言写法,构件队列操作

1.层序遍历操作函数

void LevelorderTraversal(BinaryTreeNode*root)
{
Queue Q;BinaryTreeNode T;
Q=CreatQueue(MaxSize);
Add(Q,root);  //给初始队列值
while(!isempty(Q))
{
T=deleteQ(Q);
printf("%d\n",T->data);//访问数据并返回输出点
if(T->left) Add(Q,T->left);
if(T->right) Add(Q,T->right);
}
}

队列创立?

1.链表式队列构建
typedef struct QNode{
Elemtype data;//struct TreeNode*root;//可以是任意类型数据
struct QNode *next;
}QNode,*Qpt;

typedef struct {
Qpt front;
Qpt rear;
}Queue,*Quept;


bool isempty(Quept Q)
{
if(Q.front==Q.rear)
{
return true;
}
return false;
}

void enQueue(Quept Q,struct TreeNode *node)
{
p=(Qpt)malloc(sizeof(QNode));
if(!p) exit(OVERFLOW);
p->data=e//p->root=node;
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}

void deleQueue(Quept Q,struct TreeNode *node)
{
if(Q.rear==Q.front) return ERROR;//队列不空,则删除Q的对头元素,用e返回其值,并返回OK否则返回ERROR
p=Q.front->next;
e=p->data;//node=p->root;
if(Q.rear==p) Q.rear=Q.front;
free(p);
return OK;
}

//层序遍历操作函数Leetcode

int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes){





 

}

你可能感兴趣的:(C)