二叉树 是树的一种,即树中每个节点最多只能有两个子节点。
二叉树 常见考点有深度优先遍历、广度优先遍历。其中,深度优先遍历又分为前序、中序、后序遍历。
二叉树的存储方式:
1、链式存储:用指针把各个节点串联起来;
2、顺序存储:用数组把树的节点从上往下一层一层存起来(广度优先遍历);
二叉搜索树是二叉树的一种,表现为有值且有序。具体特点为:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别为二叉搜索树。
Code Part
二叉树的先中后序遍历,有递归和迭代(栈+非递归)两种方法。
递归法
二叉树先序遍历 – 递归版
const preOrder = (root) => {
let res = []
let dfs = (root) => {
if(!root) return;
res.push(root.val) //先序遍历从根节点开始
dfs(root.left) //递归左子树
dfs(root.right) //再递归右子树
}
dfs(root)
return res
}
二叉树中序遍历 – 递归版
var inOrder = (root) => {
let res = []
let dfs = (root) => {
if(!root) return;
dfs(root.left)
res.push(root.val)
dfs(root.right