144. 二叉树的前序遍历
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<>();
if (root == null){
return result;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()){
TreeNode node = stack.pop();
result.add(node.val);
if (node.right != null){
stack.push(node.right);
}
if (node.left != null){
stack.push(node.left);
}
}
return result;
}//迭代法
List<Integer> result = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
if(root == null){
return result;
}
result.add(root.val);
preorderTraversal(root.left);
preorderTraversal(root.right);
return result;
}//递归法
94. 二叉树的中序遍历
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
if(root == null) {
return result;
}
TreeNode node = root;
while(node !=null || !stack.isEmpty()){
if(node !=null){
stack.push(node);
node = node.left;
}
else{
node = stack.pop();
result.add(node.val);
node = node.right;
}
}
return result;
}//迭代法
List<Integer> result = new ArrayList<>();
public List<Integer> inorderTraversal(TreeNode root) {
if(root == null){
return result;
}
inorderTraversal(root.left);
result.add(root.val);
inorderTraversal(root.right);
return result;
}//递归法
145. 二叉树的后序遍历
public List<Integer> postorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<>();
Stack<TreeNode> stack = new Stack<>();
if(root == null){
return result;
}
stack.push(root);
while(!stack.isEmpty()){
TreeNode node = stack.pop();
result.add(node.val);
if(node.left !=null){
stack.push(node.left);
}
if(node.right !=null){
stack.push(node.right);
}
}
Collections.reverse(result);
return result;
}//迭代法,与前序遍历类似
List<Integer> result = new ArrayList<>();
public List<Integer> postorderTraversal(TreeNode root) {
if(root == null){
return result;
}
postorderTraversal(root.left);
postorderTraversal(root.right);
result.add(root.val);
return result;
}//递归法