先定义一个二叉树的结点
再创建二叉树,这里就不写了,之前的有创建二叉树的博客。
层序遍历
用到栈的思想,
1 先让根 节点进队列,2 然后读队顶元素,3 让他出队列4 打印它的值5 让队顶元素的左右子树进栈,当它的左右子树都不为空时执行6 并一直执行此操作,直到遍历完
当队列中无元素时,便把整个树遍历完了。
c++版本
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*///用来表示队列中存放的数据类型struct levelNode{int level;TreeNode *root;};
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>>ret;if(root==NULL){return ret;}queue<levelNode> q;levelNode ln={0,root};q.push(ln);while(!q.empty()){levelNode front =q.front();q.pop();if(ret.size() <= front.level){vector<int>v;ret.push_back(v);}ret[front.level].push_back(front.root->val);if(front.root->left!=NULL){levelNode lnc = {front.level+1,front.root->left};q.push(lnc);}if(front.root->right!=NULL){levelNode lnc = {front.level+1,front.root->right};q.push(lnc);}}return ret;}
};