二叉树的递归遍历
递归思路
- 确定递归函数的参数parameter和返回值
- 确定终止条件
- 确定单层递归逻辑
具体代码
CPP
前序遍历
vector<int> res;
void traversal(TreeNode *root){if(!root)return;res.push_back(root->val);traversal(root->left);traversal(root->right);
}
中序遍历
vector<int> res;
void traversal(TreeNode *root){if(!root)return;traversal(root->left);res.push_back(root->val);traversal(root->right);
}
后序遍历
vector<int> res;
void traversal(TreeNode *root){if(!root)return;traversal(root->left);traversal(root->right);res.push_back(root->val);
}
Java
先序遍历:
class Solution {private List<Integer> res;public Solution() {res = new ArrayList<>();}public List<Integer> preorderTraversal(TreeNode root) {if (root == null) {return res;}res.add(root.val);preorderTraversal(root.left);preorderTraversal(root.right);return res;}
}
后序遍历
class Solution {private List<Integer> res = new ArrayList<>();public List<Integer> postorderTraversal(TreeNode root) {if (root == null) {return res;}postorderTraversal(root.left);postorderTraversal(root.right);res.add(root.val);return res;}
}
中序遍历
class Solution {private List<Integer> res = new ArrayList<>();public List<Integer> inorderTraversal(TreeNode root) {if (root == null) {return res;}inorderTraversal(root.left);res.add(root.val);inorderTraversal(root.right);return res;}
}