O(n)复杂度:将二叉树打印成多行

xiaoxiao2025-04-13  19

从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。算法:层次遍历二叉树,需要记录每层节点数目以及初始化头节点。 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; }
转载请注明原文地址: https://www.6miu.com/read-5028203.html

最新回复(0)