1前序
1.1遍历
1.1.1线性遍历
**1.**
void traverse(int[] arr) {
for (int i = 0; i < arr.length; i++) {
// 迭代访问 arr[i]
}
}
**2.**
void traverse(ListNode head) {
for (ListNode p = head; p != null; p = p.next) {
// 迭代访问 p.val
}
}
**3.**
void traverse(ListNode head) {
// 递归访问 head.val
traverse(head.next)
}
1.1.2非线性遍历
**1.**
void traverse(TreeNode root) {
traverse(root.left)
traverse(root.right)
}
**2.**
void traverse(TreeNode root) {
for (TreeNode child : root.children)
traverse(child);
}
遍历图也是N叉树遍历,用布尔数组标记是否遍历过
1.2二叉树框架
void traverse(TreeNode root) {
// 前序遍历
traverse(root.left)
// 中序遍历
traverse(root.right)
// 后序遍历
}