Binary Tree
Binary Tree 主要考点是一手搜索,谈到搜索,常见算法有两种
(1) 二叉树上的DFS:
主流的方法有三种,包括
Traversal方法
Divide-and-Conquer方法
非递归方法
(2) 二叉树上的BFS:
目前为止见到最多的是level order traversal。这里值得一提的是,常规的BFS一般用queue和hash的结合,但是因为二叉树独特的树形结构,可以省略hash,直接用一个queue解决BFS。这个特性还是比较有意思的。
最后,希望注意定义TreeNode类的方法,考官不会帮你定义类,这个具体定义并不难,但是需要写熟悉
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
(3) 二叉搜索树的增删查改BST 增: Insert Node in a Binary Search Tree 需要记住,一定是insert在leaf结点这个特性
删:Remove Node in Binary Search Tree 非常难做,分类讨论的说
查:Search Range in Binary Search Tree 只是沿着一条path走到底
改: 题目还没见到
Inorder Successor: 见题目:Inorder Successor of BST