zoukankan      html  css  js  c++  java
  • 剑指offer-面试题54-二叉搜索树的第k大节点-中序遍历

    /*
    题目:
    	求二叉搜索树的第k大节点。
    */
    /*
    思路:
    	中序遍历。
    */
    #include<iostream>
    #include<cstring>
    #include<vector>
    #include<algorithm>
    #include<map>
    
    using namespace std;
    
    struct TreeNode {
        int val;
        struct TreeNode *left;
        struct TreeNode *right;
        TreeNode(int x) :
                val(x), left(NULL), right(NULL) {
        }
    };
    
    
    TreeNode* KthNodeCore(TreeNode* pRoot, int &k){
        TreeNode* target = nullptr;
    
        if(pRoot->left != nullptr){
            target = KthNodeCore(pRoot->left,k);
        }
        if(target == nullptr){
            if(k == 1){
                target = pRoot;
            }
            k--;
        }
        if(target == nullptr && pRoot->right != nullptr){
            target = KthNodeCore(pRoot->right,k);
        }
        return target;
    }
    
    TreeNode* KthNode(TreeNode* pRoot, int k)
    {
        if(pRoot == nullptr && k <= 0){
            return nullptr;
        }
        return KthNodeCore(pRoot,k);
    }
    

       

  • 相关阅读:
    二分图的最大匹配
    染色法判定二分图
    kruskal求最小生成树
    prim算法求最小生成树
    floyd
    spfa算法
    bellman_ford
    Dijkstra
    文件操作_1-18 选择题
    会话控制_2-5 编程练习
  • 原文地址:https://www.cnblogs.com/buaaZhhx/p/12088814.html
Copyright © 2011-2022 走看看