Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)
生活随笔
收集整理的這篇文章主要介紹了
Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 解析
- 思路
- 改進
- 代碼
解析
Queue為儲存節點隊列
Q_pos指向Queue尾部
Q_pri指向Queue頭部
ret數組儲存節點val值
*returnSize指向數組尾部
思路
先將root節點放入Queue隊列中,Q_pos,Q_pri隨之變化
判斷Queue隊列頭部Queue[Q_pri]是否為空
非空
將其非空左右子樹加入隊列,Q_pos隨之變化
輸出頭節點,Q_pri隨之變化
為空
表明遍歷完成
改進
1、Queue使用鏈表代替,可將空間復雜度降至O(1)
代碼
int* levelOrder(struct TreeNode* root, int* returnSize){struct TreeNode** Queue=(struct TreeNode*)malloc(sizeof(struct TreeNode)*2000);int Q_pos=2000,Q_pri=2000;int* ret=(int*)malloc(sizeof(int)*1000);*returnSize=0;Queue[--Q_pos]=root;Q_pri--;while(Queue[Q_pri]!=NULL){if(Queue[Q_pri]->left!=NULL){Queue[--Q_pos]=Queue[Q_pri]->left;}if(Queue[Q_pri]->right!=NULL){Queue[--Q_pos]=Queue[Q_pri]->right;}ret[(*returnSize)++]=Queue[Q_pri--]->val;}return ret; }總結
以上是生活随笔為你收集整理的Leetcode题库 32.从上到下打印二叉树(层次遍历 C实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode题库 6.Z字形变换(C
- 下一篇: Leetcode题库 19.删除链表的倒