zoukankan      html  css  js  c++  java
  • 二叉搜索树的第K个结点

    题目描述

    给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8)    中,按结点数值大小顺序第三小结点的值为4。
     
    思路:
    中序遍历二叉搜索树,就能得到顺序数列,所以先中序遍历二叉树,存储在vector中,然后返回第K-1元素。
    代码如下:
    /*
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    */
    class Solution {
    public:
        void mid(TreeNode * pRoot, vector<TreeNode *> & vec)
        {
            if(pRoot==NULL)
                return;
            mid(pRoot->left,vec);
            vec.push_back(pRoot);
            mid(pRoot->right,vec);
        }
        TreeNode* KthNode(TreeNode* pRoot, int k)
        {
            if(pRoot==NULL||k==0)
                return NULL;
            vector<TreeNode *> vec;
            mid(pRoot,vec);
            int i=0;
            if(vec.size()<k)
                return NULL;
            return vec[k-1];
        }
    
        
    };
  • 相关阅读:
    exp 和imp 与expdp / impdp 区别
    nginx优化
    nginx root alias proxypass
    mysql3
    logrotate 用法
    SQL执行顺序
    http与RPC的关系
    docker
    windows 时间同步
    Java生成指定长度的随机字符串
  • 原文地址:https://www.cnblogs.com/JsonZhangAA/p/12172257.html
Copyright © 2011-2022 走看看