Last updated on 2023年6月7日 晚上
144.二叉树的前序遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
class Solution { void preorderTraversal(TreeNode root, List<Integer> result){ if(root == null){ return; }
result.add(root.val); preorderTraversal(root.left, result); preorderTraversal(root.right, result); } public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); preorderTraversal(root, result); return result; } }
|
145.二叉树的后序遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
class Solution { void treePostOrderTraversal(TreeNode root, List<Integer> result){ if(root == null){ return; } treePostOrderTraversal(root.left, result); treePostOrderTraversal(root.right, result); result.add(root.val); }
public List<Integer> postorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); treePostOrderTraversal(root, result); return result; } }
|
94.二叉树的中序遍历
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
class Solution { void treeInorderTraversal(TreeNode root, List<Integer> result){ if(root == null){ return; }
treeInorderTraversal(root.left, result); result.add(root.val); treeInorderTraversal(root.right, result); }
public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); treeInorderTraversal(root, result); return result; } }
|
144.二叉树的前序遍历(迭代方式)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<Integer> preorderTraversal(TreeNode root) { Stack<TreeNode> st = new Stack<>(); List<Integer> result = new ArrayList<>();
if(root == null){ return result; } st.add(root); while(!st.isEmpty()){ TreeNode tmpNode = st.pop(); result.add(tmpNode.val); if(tmpNode.right != null){ st.push(tmpNode.right); }
if(tmpNode.left != null){ st.push(tmpNode.left); } } return result; } }
|
94.二叉树的中序遍历(迭代法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); if(root == null){ return result; } Stack<TreeNode> st = new Stack<>(); TreeNode curr = root;
while(curr != null || !st.isEmpty()){ if(curr != null){ st.push(curr); curr = curr.left; }else{ curr = st.pop(); result.add(curr.val); curr = curr.right; } } return result; } }
|
145.二叉树的后序遍历(迭代法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val, TreeNode left, TreeNode right) { * this.val = val; * this.left = left; * this.right = right; * } * } */ class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); if(root == null){ return result; } Stack<TreeNode> st = new Stack<>(); st.push(root); while(!st.isEmpty()){ TreeNode node = st.pop(); result.add(node.val); if(node.left != null){ st.push(node.left); }
if(node.right != null){ st.push(node.right); } } Collections.reverse(result); return result; } }
|
144.二叉树的前序遍历(统一迭代法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
class Solution { public List<Integer> preorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); Stack<TreeNode> st = new Stack<>(); if(root == null){ return result; } st.push(root); while(!st.isEmpty()){ TreeNode node = st.peek(); if(node != null){ st.pop(); if(node.right != null){ st.push(node.right); } if(node.left != null){ st.push(node.left); } st.push(node); st.push(null); }else{ st.pop(); node = st.peek(); st.pop(); result.add(node.val); } } return result; } }
|
94.二叉树的中序遍历(统一迭代法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
class Solution { public List<Integer> inorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); Stack<TreeNode> st = new Stack<>(); if(root == null){ return result; } st.push(root); while(!st.isEmpty()){ TreeNode node = st.peek(); if(node != null){ st.pop(); if(node.right != null){ st.push(node.right); }
st.push(node); st.push(null);
if(node.left != null){ st.push(node.left); } }else{ st.pop(); node = st.peek(); st.pop(); result.add(node.val); } } return result; } }
|
145.二叉树的后序遍历(统一迭代法)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
|
class Solution { public List<Integer> postorderTraversal(TreeNode root) { List<Integer> result = new ArrayList<>(); Stack<TreeNode> st = new Stack<>(); if(root == null){ return result; } st.push(root); while(!st.isEmpty()){ TreeNode node = st.peek(); if(node != null){ st.pop(); st.push(node); st.push(null); if(node.right != null){ st.push(node.right); } if(node.left != null){ st.push(node.left); } }else{ st.pop(); node = st.peek(); st.pop(); result.add(node.val); } } return result; } }
|
my-leetcode-logs-20230605
https://thewangyang.github.io/2023/06/05/leetcode-notes-20230605/