import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.List;
//二叉树迭代遍历
public class TraversalTreeNode {
public static void main(String[] args) {
}
//二叉树前序遍历
public List preorderTraversal(TreeNode root) {
List res = new ArrayList<>();
if (root == null) {
return res;
}
Deque stack = new ArrayDeque<>();
TreeNode node = root;
while (!stack.isEmpty() || node != null) {
while (node != null) {
res.add(node.val);
stack.push(node);
node = node.left;
}
node = stack.pop();
node = node.right;
}
return res;
}
//二叉树中序遍历
public List inorderTraversal(TreeNode root) {
List res = new ArrayList<>();
if (root == null) {
return res;
}
TreeNode node = root;
Deque queue = new ArrayDeque<>();
while (!queue.isEmpty() || node != null) {
while (node != null) {
queue.push(node);
node = node.left;
}
node = queue.pop();
res.add(node.val);
node = node.right;
}
return res;
}
//二叉树后续遍历
public List postorderTraversal(TreeNode root) {
List res = new ArrayList<>();
if (root == null) {
return res;
}
Deque stack = new ArrayDeque<>();
TreeNode prev = null;
while (root != null || !stack.isEmpty()) {
while (root != null) {
stack.push(root);
root = root.left;
}
root = stack.pop();
if (root.right == null || root.right == prev) {
res.add(root.val);
prev = root;
root = null;
} else {
stack.push(root);
root = root.right;
}
}
return res;
}
}
暑期编程PK赛
得CSDN机械键盘等精美礼品!