從上往下列印二元樹

2020-09-21 12:00:39

從上往下列印出二元樹的每個節點,同層節點從左至右列印。


對本題的理解是層序遍歷二元樹。

用佇列來儲存二元樹的節點,先將樹的根節點插入佇列

當佇列不為空時一直執行一下操作:

從佇列中取出節點,將節點的值存入vector

若左子樹不為空,將左子樹插入佇列

若右子樹不為空,將右子樹插入佇列

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