二分探索木を考えると、その中の最初のk小さいノードを検索してください。例えば、(5,3,7,2,4,6,8)と、第3の接続点に係る数値は、4要約です。

/ * 
パブリッククラスツリーノード{ 
    int型のval = 0; 
    TreeNodeのは=ヌルを残しました。
    ツリーノードを右= NULL; 

    公共のTreeNode(int型のval){ 
        this.val =ヴァル。

    } 

} 
* / 
インポート   java.utilの*。;
パブリック クラスソリューション{ 
    
    ツリーノードKthNode(ツリーノードPROOT、int型K){   
         場合(PROOT == NULL || K == 0 ){
             戻り ヌル
        } 
        スタック <ツリーノード> S = 新しいスタック<ツリーノード> (); 
        ツリーノードのノード =PROOT; 
        s.add(ノード)。
        一方、(!node.left = NULL ){ 
            s.add(node.left)。
            ノード = node.left。
        } 
        INT NUM = 0 一方、(!s.empty()){ 
            ツリーノードTEMP = s.pop()。
            NUM ++ ;
            もし(NUM == K){
                 戻りTEMP。
            } 
            もし(!temp.right = NULL ){ 
                TEMP = temp.right。
                s.add(TEMP)。
                一方、(!temp.left = NULL ){ 
                    s.add(temp.left)。
                    温度 = temp.left。
                } 
            } 
        } 
        戻り ヌル
    } 


}

 

おすすめ

転載: www.cnblogs.com/q-1993/p/10979540.html