先序遍历:头左右
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode() {}
* TreeNode(int val) { this.val = val; }
* TreeNode(int val, TreeNode left, TreeNode right) {
* this.val = val;
* this.left = left;
* this.right = right;
* }
* }
*/class Solution {public List<Integer> preorderTraversal(TreeNode root) {List<Integer> ans = new ArrayList<>();dfs(root, ans);return ans;}public void dfs(TreeNode root, List<Integer> list){if(root == null){return;}list.add(root.val);dfs(root.left, list);dfs(root.right, list);}
}
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = rightclass Solution:def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:ans = []def dfs(root):if root is None:returnans.append(root.val)dfs(root.left)dfs(root.right)dfs(root)return ans
中序遍历:左头右
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = rightclass Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:ans = []def dfs(root):if root is None:returndfs(root.left)ans.append(root.val)dfs(root.right)dfs(root)return ans
后序遍历:左右头
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, val=0, left=None, right=None):
# self.val = val
# self.left = left
# self.right = rightclass Solution:def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]:ans = []def dfs(root):if root is None:returndfs(root.left)dfs(root.right)ans.append(root.val)dfs(root)return ans