二叉搜索树的第k个结点为什么这么写不对?
class Solution {
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
//因为二叉搜索树的中序遍历是节点值递增排序的,所以只需要求出中序遍历就行。
vector<int> v;
if(k==0)return nullptr;
inorder(pRoot,v);
TreeNode* res=new TreeNode(v[k-1]);
return res;
}
void inorder(TreeNode* pRoot,vector<int>& v_in)
{
if(!pRoot)return ;
if(pRoot->left)
inorder(pRoot->left,v_in);
v_in.push_back(pRoot->val);
if(pRoot->right)
inorder(pRoot->right,v_in);
}
};
#笔试题目#
public:
TreeNode* KthNode(TreeNode* pRoot, int k)
{
//因为二叉搜索树的中序遍历是节点值递增排序的,所以只需要求出中序遍历就行。
vector<int> v;
if(k==0)return nullptr;
inorder(pRoot,v);
TreeNode* res=new TreeNode(v[k-1]);
return res;
}
void inorder(TreeNode* pRoot,vector<int>& v_in)
{
if(!pRoot)return ;
if(pRoot->left)
inorder(pRoot->left,v_in);
v_in.push_back(pRoot->val);
if(pRoot->right)
inorder(pRoot->right,v_in);
}
};
#笔试题目#