[toc]
Tree
108. 将有序数组转换为二叉搜索树
二叉搜索树的中序遍历就是一个有序数组,相当于是要根据中序遍历结果还原一棵二叉搜索树,代码如下:
|
|
105. 从前序与中序遍历序列构造二叉树
前序遍历的第一个节点就是根节点,随后递归执行,可以通过构造中序遍历的字典来快速查找中序遍历根节点,优化时间
|
|
恢复二叉搜索树
|
|
BFS
模版
|
|
116. 填充每个节点的下一个右侧节点指针
O(1)空间解法
O(n)空间解法
Bfs
103. 二叉树的锯齿形层次遍历
Bfs遍历这棵树,在指定位置翻转结果
1234567891011121314151617181920212223242526272829303132333435363738 class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {if (root == null) {return new ArrayList<List<Integer>>();}List<List<Integer>> results = new ArrayList<List<Integer>>();LinkedList<TreeNode> node_queue = new LinkedList<TreeNode>();node_queue.offer(root);boolean is_left = true;while (!node_queue.isEmpty()) {LinkedList<Integer> array = new LinkedList<Integer>();int size = node_queue.size();for (int i =0;i < size;i++) {TreeNode node = node_queue.poll();if (node.left != null) {node_queue.offer(node.left);}if (node.right != null) {node_queue.offer(node.right);}if (is_left) {array.add(node.val);} else {array.push(node.val);}}is_left = !is_left;results.add(array);}return results;}}
DFS
124. 二叉树中的最大路径和
|
|