1.前序遍历
/*
前序遍历
*/
void preOrderTraversal(BTNode root) {
if(root == null) return;
System.out.print(root.val+" ");
preOrderTraversal(root.left);
preOrderTraversal(root.right);
}
2.中序遍历
/*
中序遍历
*/
void inOrderTraversal(BTNode root){
if(root == null)return;
inOrderTraversal(root.left);
System.out.print(root.val+" ");
inOrderTraversal(root.right);
}
3.后序遍历
/*
后序遍历
*/
void postOrderTraversal(BTNode root){
if(root == null){
return;
}else{
postOrderTraversal(root.left);
postOrderTraversal(root.right);
System.out.print(root.val+" ");
}
}
当要求返回遍历的结果时,怎么做呢?
1.给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
比如这样:
List<Integer> l = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
if(root == null){
return l;
}else{
l.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
}
return l;
}
2.给定一个二叉树的根节点 root ,返回它的 中序 遍历。
输入:root = [1,null,2,3]
输出:[1,3,2]
输入:root = []
输出:[]
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
if(root != null){
List<Integer> left = inorderTraversal(root.left);
list.addAll(left);
list.add(root.val);
List<Integer> right = inorderTraversal(root.right);
list.addAll(right);
}
return list;
}
3.给定一个二叉树,返回它的 后序 遍历。
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
if(root == null){
return list;
}else{
List<Integer> left = postorderTraversal(root.left);
list.addAll(left);
List<Integer> right = postorderTraversal(root.right);
list.addAll(right);
list.add(root.val);
}
return list;
}