剑指offer---二叉搜索树的第K个节点
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
很自然想到中序遍历 我用的递归的方法
class Solution { private: void ZhongXuBianLi(vector<TreeNode*> &A,TreeNode* root) { if (root == NULL) return; ZhongXuBianLi(A, root->left); A.push_back(root); ZhongXuBianLi(A, root->right); } public: TreeNode* KthNode(TreeNode* pRoot, int k) { if ((pRoot == NULL) || (k <= 0)) return NULL; vector<TreeNode*> re; ZhongXuBianLi(re, pRoot); if (k > re.size()) return NULL; else return re[k - 1]; } };