代码随想录day14
题目
144.二叉树的前序遍历
145.二叉树的中序遍历
94.二叉树的后序遍历
二叉树的递归遍历
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
preorder(root,list);
return list;
}
public void preorder(TreeNode root,List<Integer> list){
if(root == null){
return;
}
list.add(root.val);
preorder(root.left, list);
preorder(root.right, list);
}
public void inorder(TreeNode root,List<Integer> list){
if(root == null){
return;
}
inorder(root.left, list);
list.add(root.val);
inorder(root.right, list);
}
public void postorder(TreeNode root,List<Integer> list){
if(root == null){
return;
}
postorder(root.left, list);
postorder(root.right, list);
list.add(root.val);
}
}
二叉树的迭代遍历
class Solution {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<>();
preorder(root,list);
return list;
}
public void preorder(TreeNode root,List<Integer> list){
if(root == null){
return;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while(!stack.isEmpty()){
TreeNode node = stack.pop();
list.add(node.val);
if(node.right != null){
stack.push(node.right);
}
if(node.left != null){
stack.push(node.left);
}
}
}
public void inorder(TreeNode root,List<Integer> list){
if(root == null){
return;
}
while(!stack.isEmpty() || node != null){
if(node != null){
stack.push(node);
node = node.left;
}else{
node = stack.pop();
list.add(node.val);
node = node.right;
}
}
}
public void postorder(TreeNode root,List<Integer> list){
if(root == null){
return;
}
Stack<TreeNode> stack = new Stack<>();
stack.push(root);
while (!stack.isEmpty()){
TreeNode node = stack.pop();
list.add(node.val);
if (node.left != null){
stack.push(node.left);
}
if (node.right != null){
stack.push(node.right);
}
}
}
}