第一题 366. Find Leaves of Binary Tree
题目描述
将树的叶节点进行集合输出,每次输出当前最底下的叶节点
算法
|
|
第二题 515. Find Largest Value in Each Tree Row
题目描述
给定二叉树,返回其每一行的最大元素。
算法
BFS
|
|
DFS
|
|
第三题 538. Convert BST to Greater Tree
题目描述
给定一棵二叉查找树(BST),将其转化为“Greater Tree”,原始BST中的每一个节点都替换为不小于其本身的各节点的和。
算法
从右开始遍历节点,并计算现在总共的sum值
|
|
第四题 104. Maximum Depth of Binary Tree
题目描述
求一棵树的最深的深度
算法
利用回溯的方法进行求取
|
|
第五题 110. Balanced Binary Tree
题目描述
查看一棵树是不是平衡树
算法
与之前的题目相似
|
|
学到的东西
关于java值传递: 链接
如果传入的是普通数据 -> 出来不会改变
如果传入的是数据类型 -> 传入的实际上是数据类型的地址,如果数据类型本身提供了对自身的改变,那么可以改变值。 如果没有,就不不会改变。
第六题 111. Minimum Depth of Binary Tree
题目描述
求到最近的叶节点的最短距离
算法
|
|
第七题 226. Invert Binary Tree
题目描述
反转一棵树
算法
BFS
|
|
DFS
|
|
第八题 582. Kill Process
题目描述
给定n个进程,进程ID为PID,父进程ID为PPID。
当杀死一个进程时,其子进程也会被杀死。
给定进程列表和其对应的父进程列表,以及被杀死的进程ID,求所有被杀死的进程ID。
注意:
- 给定被杀死的进程ID一定在进程列表之中
- n >= 1
算法
先用hashmap找出一个节点所有的孩子,再进行检查和删除。
|
|
第九题 563. Binary Tree Tilt
题目描述
给定二叉树,计算二叉树的“倾斜值”(tilt)
二叉树节点的倾斜值是指其左右子树和的差的绝对值。空节点的倾斜值为0。
注意:
- 节点和不超过32位整数范围
- 倾斜值不超过32位整数范围
算法
|
|
第十题 623. Add One Row to Tree
题目描述
给定二叉树,根节点为第1层,在其第d层追加一行值为v的节点。将第d层各左孩子节点链接为新节点的左孩子,各右孩子节点链接为新节点的右孩子。
若d为1,则将原来的根节点链接为新节点的左孩子。
算法
DFS
|
|
BFS
|
|
第十一题 404. Sum of Left Leaves
题目描述
给定二叉树,计算其所有左叶子的和。
算法
BFS
|
|
DFS
|
|
第十二题 100. Same Tree
题目描述
给定两棵二叉树,编写函数检查它们是否相等。
当且仅当两棵二叉树的结构相同并且节点值也相同时,判定为相等。
算法
|
|
第十三题 144. Binary Tree Preorder Traversal
题目描述
给定一棵二叉树,返回节点值的先序遍历结果(尽量使用非递归算法)。
算法
自己的(比较傻)
|
|
别人的
先将右边的几点全部推入stack中,在进行挨个遍历
|
|
第十四题 255. Verify Preorder Sequence in Binary Search Tree
题目描述
查看一个数组能否正确的组成一课排序树
算法
利用stack,在进入每个右边节点的时候,查看右边节点中的所有节点是否都小于部分根节点
Stack
|
|
Array
|
|
第十五题 230. Kth Smallest Element in a BST
题目描述
给定一棵二叉搜索树(BST),编写一个函数kthSmallest找出其中第k小的元素。
算法
|
|