Sword refers to offer—54. The kth node of the binary search tree—Analysis and code (Java)

Sword refers to offer-54. The kth node of the binary search tree-analysis and code [Java]

1. Title

Given a binary search tree, find the kth smallest node in it. For example, in (5,3,7,2,4,6,8), the value of the third small node is 4 in order of the value of the node.

Two, analysis and code

1. In-order traversal

(1) Thinking

Combining the characteristics of the binary search tree, the sequence obtained by the order traversal is the order sequence of the node values ​​from small to large, so the kth node is the kth node reached by the middle order traversal.

(2) Code

import java.util.Stack;
public class Solution {
    TreeNode KthNode(TreeNode pRoot, int k) {
        if (pRoot == null || k == 0)
            return null;
        Stack<TreeNode> sta = new Stack<>();
        int index = 0;
        TreeNode node = pRoot;
        while (!sta.empty() && index < k) {
            while (sta.peek().left != null)
            while (!sta.empty() && sta.peek().right == null && index < k) {
                node = sta.pop();
            if (!sta.empty() && index < k) {
                node = sta.pop();
        if (sta.empty() && index < k)
            return null;
        return node;

(3) Results

Running time: 23ms, occupied memory: 9672k.

Three, other


Guess you like

Origin blog.csdn.net/zml66666/article/details/110942471