题解 | #实现二叉树先序,中序和后序遍历#
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362
这个题目比较基础,递归即可,注意插入到vector的位置,类和函数的设计也是值得注意的,做到安全和鲁棒性。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
class Solution {
private:
void preOrder(const TreeNode* root, vector<int>& pre)
{
if(root==nullptr) return;
pre.push_back(root->val);
preOrder(root->left, pre);
preOrder(root->right, pre);
}
void midOrder(const TreeNode* root, vector<int>& mid)
{
if(root==nullptr) return;
midOrder(root->left, mid);
mid.push_back(root->val);
midOrder(root->right, mid);
}
void endOrder(const TreeNode* root, vector<int>& end)
{
if(root==nullptr) return;
endOrder(root->left, end);
endOrder(root->right, end);
end.push_back(root->val);
}
public:
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型vector<vector<>>
*/
vector<vector<int> > threeOrders(TreeNode* root) {
// write code here
vector<int> forward, mid, back;
vector<vector<int>> res;
preOrder(root, forward);
midOrder(root, mid);
endOrder(root, back);
res.push_back(forward);
res.push_back(mid);
res.push_back(back);
return res;
}
};
查看12道真题和解析