从上往下打印二叉树C++

题目描述

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

打印二叉树的有两种方式:深度优先遍历或者广度优先,这道题要求同层结点从左至右打印, 说明需要进行广度优先遍历,为了达到这个目的,我们需要借助数据结构:队列,不断将根结点、左孩子结点、友孩子结点push进入队列中,同时进行打印操作;

具体细节见代码:

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

    }
};

你可能感兴趣的:(剑指offer,C++,队列)