Non-recursive traversal
Preorder traversal
https://leetcode-cn.com/problems/binary-tree-preorder-traversal/
Preorder
Postorder
Layer preorder
Recursive traversal
Recursive traversal of the law: whenever push_back are current with nodes, nodes around encountered, are recursively traverse.
Preorder traversal
1 class Solution { 2 public: 3 vector<int> preorderTraversal(TreeNode* root) { 4 vector<int> res; 5 preorderTraversalCore( root, res); 6 return res; 7 } 8 9 void preorderTraversalCore(TreeNode* root,vector<int>& res){ 10 if(root==nullptr) 11 return; 12 res.push_back(root->val); 13 preorderTraversalCore( root->left, res); 14 preorderTraversalCore( root->right, res); 15 return; 16 } 17 };
Preorder
1 class Solution { 2 public: 3 vector<int> inorderTraversal(TreeNode* root) { 4 vector<int> res; 5 inorderTraversalCore( root, res); 6 return res; 7 } 8 9 void inorderTraversalCore(TreeNode* root,vector<int>& res){ 10 if(root==nullptr) 11 return; 12 inorderTraversalCore( root->left, res); 13 res.push_back(root->val); 14 inorderTraversalCore( root->right, res); 15 return; 16 } 17 18 };
Postorder
1 class Solution { 2 public: 3 vector<int> postorderTraversal(TreeNode* root) { 4 vector<int> res; 5 postorderTraversalCore( root, res); 6 return res; 7 } 8 9 void postorderTraversalCore(TreeNode* root,vector<int>& res){ 10 if(root==nullptr) 11 return; 12 postorderTraversalCore( root->left, res); 13 postorderTraversalCore( root->right, res); 14 res.push_back(root->val); 15 return; 16 } 17 18 };
Layer preorder