二叉树的第k个节点

问题描述

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

思路解析

二叉搜索树的中序遍历结果是有序的,所以直接中序遍历,然后输出第k个结果就好了。

代码

public class KthNode {

    ArrayList<TreeNode> TraversalRes = new ArrayList<>();

    TreeNode KthNode(TreeNode pRoot, int k){
        midOrderTraversal(pRoot);
        if(k>TraversalRes.size() || k<1) return null;
        return TraversalRes.get(k-1);
    }

    void midOrderTraversal(TreeNode root){
        if(root==null) return;

        midOrderTraversal(root.left);
        TraversalRes.add(root);
        midOrderTraversal(root.right);
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_43857365/article/details/89489730