zoukankan      html  css  js  c++  java
  • ※剑指offer系列51:二叉搜索树的第k个结点

    根据二叉搜索树的特点,它中序遍历的顺序就是从小到大的顺序。因此只要中序遍历找到第k个就可以。

     1 class Solution {
     2 public:
     3     TreeNode* KthNode(TreeNode* pRoot, int k)
     4     {
     5         if (pRoot == NULL||k==0)
     6             return NULL;
     7         return findKthNode(pRoot,k);
     8         
     9     }
    10     TreeNode* findKthNode(TreeNode* pRoot, int &k)
    11     {
    12         TreeNode* target = NULL;
    13         if (pRoot->left)//一直找到最左的结点
    14             target=findKthNode(pRoot->left,k);
    15         if (target == NULL)
    16         {
    17             if (k == 1)
    18                 target = pRoot;
    19             k--;
    20         }
    21 
    22         if (target==NULL&&pRoot->right)//在左边没找到,就去右子树
    23             target=findKthNode(pRoot->right, k);
    24         return target;
    25     }
    26 
    27 
    28 };
  • 相关阅读:
    linux命令大全
    IP协议
    TCP、IP、ARP协议之间的工作关系
    程序出现问题后
    HTTP(超文本传输协议)
    多线程
    syslog.conf文件
    logger命令
    gdb
    二、数据的存储结构
  • 原文地址:https://www.cnblogs.com/neverland0718/p/11266073.html
Copyright © 2011-2022 走看看