《剑指Offer》 从上往下打印出二叉树

来源:互联网 发布:linux设置时间 编辑:程序博客网 时间:2024/05/22 16:50

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

思路:
其实就是层序遍历,设置一个TreeNode*类型的队列s,用来保存二叉树层序遍历的节点,因为队列是先进先出,所以很好地控制了同层节点从左至右打印。如果root为空,直接返回空;将root入队列,当s不为空时,将此时s对应的节点的val放到treenum里,然后将s的左右孩子也入队列,再将已经取过val的节点pop。

代码:

/*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> treenum;        queue<TreeNode*> s;//用来保存按层序遍历顺序的节点        if(root==NULL){//如果root为空,直接返回空            return treenum;        }        s.push(root);//将root入队列        while(!s.empty()){            root=s.front();            treenum.push_back(root->val);//当s不为空时,将此时s对应的节点的val放到treenum里            if(root->left!=NULL){//将s的左右孩子也入队列(如果存在)                s.push(root->left);            }            if(root->right!=NULL){                s.push(root->right);            }            s.pop();//将已经取过val的节点出队列        }        return treenum;    }};

输出结果:运行时间: <1 ms 占用内存:8568K 状态:答案正确

0 0
原创粉丝点击