本文主要是介绍leetcode 刷题之路 4 Binary Tree Level Order Traversal,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
For example:
Given binary tree {3,9,20,#,#,15,7}
,
3/ \9 20/ \15 7
return its level order traversal as:
[[3],[9,20],[15,7] ]
树的层序遍历,使用队列来实现。不一样的地方就是需要以层为单位进行输出,我这里使用两个整型遍历levelNodeNum1和levelNodeNum2分别记录当前层和下一层节点的个数,levelNodeNum1初始化当然为1,表示根节点个数为 1,接下来在遍历当前层的过程通过levelNodeNum2记录加入队列的下一层的节点个数,当前层遍历完成后,将levelNodeNum2值赋给levelNodeNum1,一直重复以上操作直到队列为空即可,更具体的步骤见代码。
my accepted answer in C++:
class Solution {
public:vector<vector<int> > levelOrder(TreeNode *root) {vector<vector<int>> vvi;vector<int> vi;int levelNodeNum1 = 1; //当前层的节点个数int levelNodeNum2 = 0; //下一层的节点个数if (root == NULL) return vvi;queue<TreeNode*> qt;qt.push(root);while (!qt.empty()){while (levelNodeNum1 > 0) //遍历当前层节点,同时将下一层节点入队并记录个数{root = qt.front();vi.push_back(root->val);qt.pop();levelNodeNum1--;if (root->left != NULL){qt.push(root->left);levelNodeNum2++;}if (root->right != NULL){qt.push(root->right);levelNodeNum2++;}}vvi.push_back(vi);vi.clear();levelNodeNum1 = levelNodeNum2;levelNodeNum2 = 0;}return vvi;}};
这篇关于leetcode 刷题之路 4 Binary Tree Level Order Traversal的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!