题解 | #从上往下打印二叉树#
从上往下打印二叉树
https://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701
利用队列,层序遍历思想。利用结构数组创建队列,将当前节点的值存入数组;只要有左右孩子,就把孩子入队,当队列中头尾相遇时,意味着队列遍历结束,跳出。让returnsize=数组长度就好了
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */ /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param root TreeNode类 * @return int整型一维数组 * @return int* returnSize 返回数组行数 */ int* PrintFromTopToBottom(struct TreeNode* root, int* returnSize ) { // write code here int *arr = (int*)malloc(sizeof(int) * 1001); struct TreeNode *Que[1001]; if(!root)return arr; int front = 0, rear =0; int len = 0; Que[rear++] = root; while(front != rear){ struct TreeNode *p = Que[front]; arr[len++] = p -> val; if(p -> left){ Que[rear++] = p -> left; } if(p -> right){ Que[rear++] = p -> right; } front++; } *returnSize = len; return arr; }