算法第十七周作业01

来源:互联网 发布:ky什么意思网络用语 编辑:程序博客网 时间:2024/06/05 10:42

Description

Given a binary search tree, write a function kthSmallest to find the kth smallest element in it.

Solution

  1. 获取左子树的节点数number
    如果左子树节点数刚好为k-1,说明该节点为第k个,否则向左子树找或者向右子树找。

Code

/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode(int x) { val = x; } * } */public class Solution {    public int kthSmallest(TreeNode root, int k) {        int number = number(root.left);        if (number == k - 1) {            // 如果左子树节点数刚好为k-1,说明该节点为第k个            return root.val;        } else if (number >= k) {            // 第k个在左子树            return kthSmallest(root.left, k);        } else {            // 第k个在右子树            return kthSmallest(root.right, k - 1 - number);        }    }    // 获取该节点的所有叶子数    public int number(TreeNode node) {        if (node == null) {            return 0;        } else {            return number(node.left) + number(node.right) + 1;        }    }}
原创粉丝点击