题解 | #从上往下打印二叉树#
从上往下打印二叉树
https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param root TreeNode类
* @return int整型一维数组
* @return int* returnSize 返回数组行数
*/
#include <stdlib.h>
int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) {
// write code here
int* ret = (int*)malloc(sizeof(int)*1001); //为返回值申请空间
int retSize = 0; //存储返回值长度
struct TreeNode* st[1001]; //模拟队列
int stStart = -1, stEnd = -1; //队列头和队列尾指针
struct TreeNode* node; //出队元素
if(root == NULL) return NULL; //如果传入二叉树为空,返回NULL
st[++stEnd] = root; //root入队
while(stStart < stEnd){ //队列不为空
node = st[++stStart]; //出队
if(node->left) //如果出队元素左右子树不为空,则分别入队
st[++stEnd] = node->left;
if(node->right)
st[++stEnd] = node->right;
ret[retSize++] = node->val; //将出队元素的val放入返回数组中
}
*returnSize = retSize; //更新返回数组的长度
return ret;
}
查看16道真题和解析