文章目录
二叉树的层序遍历
二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。
示例 1:
输入:root = [3,9,20,null,null,15,7]
输出:[[3],[9,20],[15,7]]
示例 2:
输入:root = [1]
输出:[[1]]
示例 3:
输入:root = []
输出:[]
层序遍历
使用队列,队头出队带入他的左右节点
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> ret; queue<TreeNode*> s; int levelsize=0; if(root) { s.push(root); levelsize=1; } while(!s.empty()) { levelsize=s.size(); vector<int> v; while(levelsize--) { TreeNode* parm=s.front(); v.push_back(parm->val); if(parm->left) { s.push(parm->left); } if(parm->right) { s.push(parm->right); } s.pop(); } ret.push_back(v); } return ret; }
|
变形
计算第k层的节点个数
计算一共的节点个数
1 2 3 4
| for(auto e:ret) { total+=e.size(); }
|
计算深度
二叉树自底向上遍历
1
| reverse(ret.begin(),ret.end());
|