温州网站建设及推广,关于加强网站建设的情况说明,智能网站建设模板售后,北京最大的商场深度优先搜索
思路#xff1a; 二叉搜索树的特性#xff0c;通过中序遍历得到有序序列#xff0c;则遍历到第K个节点的时候即为结果#xff1b;使用栈通过深度优先遍历进行中序遍历#xff1a; 先将节点和左子节点压栈#xff1b;然后栈顶上就是“最左”叶子节点#x…深度优先搜索
思路 二叉搜索树的特性通过中序遍历得到有序序列则遍历到第K个节点的时候即为结果使用栈通过深度优先遍历进行中序遍历 先将节点和左子节点压栈然后栈顶上就是“最左”叶子节点然后通过栈回溯其父节点 p 将 p 右子树压栈重复上述过程
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int kthSmallest(TreeNode* root, int k) {std::stackTreeNode* stack;TreeNode* node root;while (node ! nullptr || stack.size() 0) {while (node ! nullptr) {stack.push(node);node node-left;}node stack.top();stack.pop();--k;if (k 0) {break;}node node-right;}return node-val;}
};