O(n)複雜度:將二叉樹列印成多行
阿新 • • 發佈:2018-12-18
- 從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。
- 演算法:層次遍歷二叉樹,需要記錄每層節點數目以及初始化頭節點。
vector<vector<int> > Print(TreeNode* pRoot) { vector<int> single; vector<vector<int> > ans; if(pRoot==NULL) return ans; queue<TreeNode*> que; TreeNode* p = pRoot; que.push(p); //已知有頭節點 len為1 接下來判斷第二層 節點 int count=0,len=1; if(p->left!=NULL) count++; if(p->right!=NULL) count++; while(!que.empty()) //層次遍歷 { p = que.front(); que.pop(); //判斷一層節點是否遍歷結束 if(len>1) //未結束 { single.push_back(p->val); len--; } else if(len==1) //結束 { single.push_back(p->val); ans.push_back(single); len =count ; count = 0; single.clear(); } if(p->left!=NULL) { que.push(p->left); count++; } if(p->right!=NULL) { que.push(p->right); count++; } } return ans; }