從上到下打印二叉樹(二叉樹層序遍歷)

題目:

從上到下打印出二叉樹的每一個節點,同一層的節點按照從左到右的順序打印。如下打印出來的結果爲[3, 9, 20, 16, 15, 7]

    3
   / \
  9   20
 /   /  \
16  15   7

解析:

利用隊列的先入先出思想來求解,先把根節點放入隊列中的隊首,如果有子結點,則把子結點依次(先左兒子後右兒子)放入隊尾,然後彈出隊首元素。接下來重複前面的操作,直到隊列元素全部彈出。<知識點:層序遍歷>

參考答案:

/***
*	typedef struct node{
*		int val;
*		struct node *left;
*		struct node *right;
*	}TreeNode;
*/

class Solution{
public:
	vector<int> levelOrder(TreeNode* root){
		vector<int> arr;
		if(nullptr == root)
			return arr;
		queue<TreeNode *> que;
		que.push(root);
		while(!que.empty()){
			TreeNode *Node = que.front();
			arr.push_back(Node -> val);
			que.pop();
			if(Node -> left)
				que.push(Node -> left);
			if(Node -> right)
				que.push(Node -> right);
		}
		return arr;
	}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章