从上到下打印二叉树(剑指offer)---c语言

本文介绍如何使用C语言实现从上到下、按层遍历二叉树,按照左到右的顺序逐层打印节点,将每层节点输出在同一行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。
例如:

给定二叉树: [3,9,20,null,null,15,7]
返回其层次遍历结果:

[
[3],
[9,20],
[15,7]
]

/** * Definition for a binary tree node. 
* struct TreeNode { 
* *     int val; 
* *     struct TreeNode *left; 
* *     struct TreeNode *right; 
* *               }; 
* */

* /** * Return an array of arrays of size 
* *returnSize. 
* * The sizes of the arrays are returned as 
* *returnColumnSizes array. 
* * Note: Both returned array and 
* *columnSizes array must be malloced, assume caller calls free(). 
* */
#define MAXSIZE 10000
int** levelOrder(struct TreeNode* root, int* returnSize, int** returnColumnSizes)
{
 if(NULL == root)    
 {        
 	*returnSize = 0;        
	 return NULL;    
 }
 struct TreeNode *queue[MAXSIZE] = {0};     //申请队列
 int head = 0, tail = 0;          	   //定义头尾指针
 int **res = (int**)malloc(sizeof(int*)*MAXSIZE);//申请二维数组    *returnColumnSizes = (int*)malloc(sizeof(int)*MAXSIZE);//申请一维数组    queue[tail++] = root;//将根节点入队
*returnSize = 0;
 while(head < tail)    
 {        
 int size = (tail - head)%MAXSIZE;获取对内元素个数        
 (*returnColumnSizes)[*returnSize] = size; //一维数组中存放元素个数
 res[*returnSize] = (int*)malloc(sizeof(int)*size);//依据元素个数开辟行数组              
	 for(int i = 0; i < size; ++i)        
	 {            
		 struct TreeNode *temp = NULL;            
		 temp = queue[head++];            
		 res[*returnSize][i] = temp->val;             
		 if(temp->left)             
 		{                  
			 queue[tail++] = temp->left;            
		 }           
		 if(temp->right)              
		 {                 
			 queue[tail++] = temp->right;              
		 }   

		 (*returnSize)++;    
	 }    
	 return res;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值