1、 二分查找
int left = 0, right = array.length - 1;
while (left <= right) {
int middle = (left + right) / 2;
if (array[middle] == target) {
// find the result
return middle;
} else if (array[middle] < target) {
left = middle + 1;
} else {
right = middle - 1;
}
}
2、广度优先搜索
void bfs(TreeNode node) {
Queue<TreeNode> queue = new LinkedList<>();
Set<TreeNode> visited = new HashSet<>();
queue.add(node);
while (!queue.isEmpty()) {
TreeNode treeNode = queue.poll();
visited.add(treeNode);
// 处理当前节点
process(treeNode);
// 找到子节点
List<TreeNode> childNodes = generated(treeNode);
for (TreeNode childNode : childNodes) {
if (!visited.contains(childNode)) {
queue.offer(childNode);
}
}
}
}
标签:TreeNode,模版,queue,算法,visited,treeNode,childNodes,childNode
From: https://www.cnblogs.com/xxjyy/p/18403950