学习笔记 树、二叉树、二叉搜索树
树的基本定义: 有根节点,有左子树和右子树,有左右子节点
常见操作: 查询(O(logn)) 插入新结点(创建)(O(logn)) 删除
树和图的差别: 有没有形成环,子节点与兄弟节点或父节点出现连接,指针指向后者的话,此时的树按照定义就变成图。
树的面试题一般用递归求解原因: 1.节点的定义就是用递归 2.重复性(自相似性)
树节点的定义代码必须熟记!!
二叉搜索树: 者的话,此时的树按照定义就变成图。
二叉搜索树特点:
- 左子树上所有结点的值均小于根结点的值
- 右子树上所有结点的值均大于根结点的值 以此类推,左右子树均为二叉搜索树(重复性)
递归
递归写法: 1.recursion terminator(递归终结) 先写好递归的终止条件,防止死循环或死递归 2.process logic in current level(处理当前层的递归逻辑) 3.drill down(挖到下一层) 4.reverse the current level status if needed(清理当前层)
思维要点: 1.不要进行人肉递归 2.找到最近最简洁的方法,将其拆成可重复解决的子问题 3.数学归纳法思维