题解 | #从上往下打印二叉树#
从上往下打印二叉树
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; }