算法第十七周作业01

xiaoxiao2021-02-28  52

Description

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

Solution

获取左子树的节点数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; } } }
转载请注明原文地址: https://www.6miu.com/read-78067.html

最新回复(0)