1.递归
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer>list=new ArrayList<>(); if(root==null) return list; list.add(root.val);//根 List<Integer>left=preorderTraversal(root.left);//左 List<Integer>right=preorderTraversal(root.right);//右 list.addAll(left);//添加所有元素到list中 list.addAll(right); return list; } }
2.非递归
import java.util.*; class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer>list=new ArrayList<>(); if(root==null) return list; Stack<TreeNode> s=new Stack<>(); s.push(root); while(!s.empty()){ TreeNode node=s.pop(); list.add(node.val); if(node.right!=null) s.push(node.right); if(node.left!=null) s.push(node.left); } return list; } }
1.递归
import java.util.*; class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer>list=new ArrayList<>(); if(root==null) return list; List left=inorderTraversal(root.left);//左 list.addAll(left); list.add(root.val);//根 List right=inorderTraversal(root.right);//右 list.addAll(right); return list; } }
2.非递归
import java.util.*; class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer>list=new ArrayList<>(); if(root==null) return list; Stack<TreeNode>s=new Stack<>(); TreeNode p=root; while(p!=null || !s.empty()){ if(p!=null){ s.push(p); p=p.left; }else{ p=s.pop(); list.add(p.val); p=p.right; } } return list; } }
示例:
输入: [1,null,2,3]
1
\
2
/
3
输出: [3,2,1]
1.递归
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<Integer>list=new ArrayList<>(); if(root==null) return list;//判空 List left=postorderTraversal(root.left); List right=postorderTraversal(root.right); list.addAll(left);//左 list.addAll(right);//右 list.add(root.val);//中 return list; } }
2.非递归
原文:https://www.cnblogs.com/xuechengmeigui/p/12668540.html