题解 | #实现二叉树先序,中序和后序遍历#
实现二叉树先序,中序和后序遍历
http://www.nowcoder.com/practice/a9fec6c46a684ad5a3abd4e365a9d362
看到二叉树的第一反应肯定是栈和回溯,回溯即递归,代码简单,应用场景自我感觉偏小。但是无奈人家好用啊。
/**
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
vector<int> pre;
vector<int> mid;
vector<int> nxt;
//回溯
void backTrace(TreeNode* node)
{
if(nullptr == node)
return;
pre.push_back(node->val);//前
backTrace(node->left);
mid.push_back(node->val);//中
backTrace(node->right);
nxt.push_back(node->val);//后
}
class Solution {
public:
/**
*
* @param root TreeNode类 the root of binary tree
* @return int整型vector<vector<>>
*/
vector<vector<int> > threeOrders(TreeNode* root) {
// write code here
vector<vector<int> > ans;
backTrace(root);
ans.push_back(pre);
ans.push_back(mid);
ans.push_back(nxt);
return ans;
}
};
查看14道真题和解析