树的遍历
前序遍历
Pre-order Traversal 前序遍历先访问根节点,再访问左节点,最后访问右节点。
Given a binary tree, return the preorder traversal of its nodes’ values.
Example:
Input: [1,null,2,3]
1
\
2
/
3
Output: [1,2,3]
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x){
val = x;
}
}
public class Solution {
private List<Integer> nodes = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
if (root == null) {
return null;
}
nodes.add(root.val);
if (root.left != null) {
this.preorderTraversal(root.left);
} else if (root.right != null) {
this.preorderTraversal(root.right);
}
return nodes;
}
public static void main(String[] args){
Solution preOrder = new Solution();
TreeNode root = new TreeNode(1);
TreeNode right = new TreeNode(2);
right.left = new TreeNode(3);
root.right = right;
List<Integer> nodes = preOrder.preorderTraversal(root);
nodes.stream().forEach(node -> {
System.out.print(node);
});
}
}
中序遍历
In-order Traversal 中序遍历先访问左节点,再访问根节点,最后访问右节点。
后序遍历
Post-order Traversal 后序遍历先访问左节点,再访问右节点,最后访问根节点。