二叉树遍历
void traverse(TreeNode root) {
// 前序遍历代码
traverse(root.left);
// 中序遍历代码
traverse(root.right);
// 后序遍历代码
}
N 叉树遍历
void traverse(ListNode root) {
for(child of root.children){
// 前序遍历代码
traverse(child);
// 后序遍历代码
}
}
二叉搜索树遍历
void BST(TreeNode root, int target) {
if (root.val == target)
// 找到目标,做点什么
if (root.val < target)
BST(root.right, target);
if (root.val > target)
BST(root.left, target);
}
链表遍历
这里链表遍历得着重说明一下,为什么将它放到树的遍历模板中呢?因为链表可以看作是一颗每个节点都只有一个子节点的树,因此也可以用树遍历的思想遍历链表
void traverse(ListNode head) {
// 前序遍历代码
traverse(head.next);
// 后序遍历代码
}