层次遍历二插树

来源:互联网 发布:java物流项目简历 编辑:程序博客网 时间:2024/06/05 14:39

题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。

/*struct TreeNode {    int val;    struct TreeNode *left;    struct TreeNode *right;    TreeNode(int x) :            val(x), left(NULL), right(NULL) {    }};*/class Solution {public:    vector<int> PrintFromTopToBottom(TreeNode* root) {        vector<int> a;        queue<TreeNode*> que;        que.push(root);        while(!que.empty()){            root =que.front();            que.pop();            if(!root)                continue;            a.push_back(root->val);            que.push(root->left);            que.push(root->right);        }        return a;    }};

分析:首先将二叉树的head赋值给队列que。在循环中,只要队列que不为空就一直循环。在循环中做如下的事情。
将二叉树的que的第一个元素赋值给二叉树的头节点head,然后在队列中将次元素删除。如果返回的不为空,就继续下面的逻辑,否则直接终止循环。下面的逻辑也很简单,首先将元素的值存储到我们要返回的对象中,然后分别将左子树和右子数进队。

1 0
原创粉丝点击