题解 | #实现二叉树先序,中序和后序遍历#
实现二叉树先序,中序和后序遍历
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; } };