题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印。
A:创建一个辅助队列,将根节点入队,添加到输出的vector中
循环:到队为空为止
若二叉树有左结点则将左节点入队
若二叉树有右节点则将右节点入队
队头元素出队
/* 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> ret; ret.clear(); if (root == nullptr) { return ret; } queue<TreeNode*> m_deque; m_deque.push(root);//根节点入队 while (!m_deque.empty()) { ret.push_back(m_deque.front()->val);// ret存入队头元素 if (m_deque.front()->left != nullptr) { m_deque.push(m_deque.front()->left);//左节点入队 } if (m_deque.front()->right != nullptr) { m_deque.push(m_deque.front()->right);//右节点入队 } m_deque.pop();//队头元素出队 } return ret; } };
相关题目:
加减二叉树:
这样的路径当然有很多。为了增加难度,妞妞决定让牛牛告诉她经过的节点的编号和最小的路径。
妞妞很聪明,给出的问题都是一定存在答案的。
你能帮帮牛牛吗?https://www.nowcoder.com/practice/39953c879b79412b85fbca2ffdeb0a4c
原文:https://www.cnblogs.com/xiexinbei0318/p/11432762.html