方法
/*** 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 i=0;int temp;int kthSmallest(TreeNode* root, int k) {if(root==nullptr){return 0;}kthSmallest(root->left,k);i++;if(i==k){temp=root->val;}kthSmallest(root->right,k);return temp;}};
/*** 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* head, int k) {stack<TreeNode*>s;while(!s.empty()||head!=nullptr){if(head){s.emplace(head);head=head->left;}else{head=s.top();s.pop();k--;if(k==0){return head->val;break;}head=head->right;}}return 0;}};
