剑23-从上到下打印二叉树结点

来源:互联网 发布:发散和收敛定义知乎 编辑:程序博客网 时间:2024/06/02 06:20

题目描述
从上往下打印出二叉树的每个节点,同层节点从左至右打印。
思路:
1、引入一个数据容器即队列deque
STL实现了一个很好的deque(两端都可以进出的队列)
2、每次打印一个结点的时候,如果该节点有子节点,则把该子节点放到一个队列的末尾。

/*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>res;        //特殊情况判断        if(root==NULL)            return res;        deque<TreeNode*>dequeTreeNode;//队列deque        dequeTreeNode.push_back(root);//将根节点入队列        while(dequeTreeNode.size()>0)        {            //定义指针pNode指向队列首元素,取出,弹出            TreeNode*pNode=dequeTreeNode.front();            dequeTreeNode.pop_front();            res.push_back(pNode->val);   //放入容器中打印出来            if(pNode->left)                dequeTreeNode.push_back(pNode->left);            if(pNode->right)                dequeTreeNode.push_back(pNode->right);        }        return res;    }};
原创粉丝点击