本文共 1904 字,大约阅读时间需要 6 分钟。
题目描述 分别按照二叉树先序,中序和后序打印所有的节点。示例1 输入 { 1,2,3} 返回值 [[1,2,3],[2,1,3],[2,3,1]]
/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; */class Solution { public: /** * * @param root TreeNode类 the root of binary tree * @return int整型vector<>> */ vector > threeOrders(TreeNode* root) { // write code here vector > res; if(root==nullptr)return res; vector preorder,inorder,postorder; preorder_traversal(preorder,root); inorder_traversal(inorder,root); postorder_traversal(postorder,root); res.push_back(preorder); res.push_back(inorder); res.push_back(postorder); return res; } void preorder_traversal(vector & v,TreeNode* root){ if(root==nullptr)return; v.push_back(root->val); preorder_traversal(v, root->left); preorder_traversal(v, root->right); } void inorder_traversal(vector & v,TreeNode* root){ if(root==nullptr)return; inorder_traversal(v, root->left); v.push_back(root->val); inorder_traversal(v, root->right); } void postorder_traversal(vector & v,TreeNode* root){ if(root==nullptr)return; postorder_traversal(v, root->left); postorder_traversal(v, root->right); v.push_back(root->val); } };
class Solution { public: void threeOrders(TreeNode* root, vector> &vect){ if(!root) return; vect[0].push_back(root->val); threeOrders(root->left,vect); vect[1].push_back(root->val); threeOrders(root->right,vect); vect[2].push_back(root->val); } vector > threeOrders(TreeNode* root) { vector > vect = { { },{ },{ }}; threeOrders(root,vect); return vect; }};
转载地址:http://mzevi.baihongyu.com/