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

    题目描述:

      给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

    思路分析:

      根据二叉搜索树的特殊性,我们中序遍历它所产生的序列就是有序序列,所以中序遍历到的第K个点就是第K小的节点。

    代码:

    import java.util.*;
    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        /*
        用非递归的方式实现中序遍历
        */
        TreeNode KthNode(TreeNode pRoot, int k)
        {
            if(pRoot==null||k<0)
                return null;
            TreeNode pNode=pRoot;
            Stack<TreeNode>s=new Stack<>();
            int count=0;
            while(pNode!=null||!s.isEmpty()){
                while(pNode!=null){
                    s.push(pNode);
                    pNode=pNode.left;
                }
                if(!s.isEmpty()){
                    pNode=s.pop();
                    count++;
                    if(count==k)
                        return pNode;
                    pNode=pNode.right;
                }
            }
            return null;
        }
    
    
    }
    
  • 相关阅读:
    CSS
    javaScript的DOM操作
    模板Template
    Django的View(视图)
    路由系统(urls.py)
    MTV和MVC模型和创建Django项目
    rest-framework认证组件
    property classmethod staticmethod和反射
    ModelSerializer和视图
    rest-framework序列化
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10962599.html
Copyright © 2011-2022 走看看