深度优先搜索

Posted 浮云神码

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度优先搜索相关的知识,希望对你有一定的参考价值。

    深度优先搜索和广度优先搜索一样,都是对图进行搜索的算法,目的也都是从起点开始搜索直到指定的终点。深度优先搜索会沿着一条路径不断往下搜索直到不能再继续为止,然后再折返,开始搜索下一条候补路径。


import java.util.Stack;
/** * https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst * 230. 二叉搜索树中第K小的元素 * 难度 中等 * 给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第k个最小元素(从 1 开始计数)。 * * 示例 1: * 输入:root = [3,1,4,null,2], k = 1 * 输出:1 * * 示例 2: * 输入:root = [5,3,6,2,4,null,null,1], k = 3 * 输出: * * 来源:力扣(LeetCode) * 链接:https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst */public class KthSmallestElementInBst { public int kthSmallest(TreeNode root, int k) { Stack<TreeNode> stack = new Stack<>(); while (true) { // 此循环将root的左子节点按从大到小存入栈中 // 当pop时, 就会按照从小到大的顺序了 while (root != null) { stack.push(root); root = root.left; } // 这里k必须小于树节点的数量, 不然会报错 // 可以增加stack.isEmpty()的判断, 不过在本题中k一定小于节点数量 root = stack.pop(); if (--k == 0) { return root.val; } // 处理完当前节点, 再处理右子节点 root = root.right; } }}

以上是关于深度优先搜索的主要内容,如果未能解决你的问题,请参考以下文章

深度优先搜索算法解释下?

深度优先搜索

搜索算法---深度优先搜索

图相关算法

深度优先搜索学习---(入门)

深度优先搜索