算法第十七周作业01
2017-06-08 13:27
351 查看
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; } } }
相关文章推荐
- 算法第十二周作业01
- 算法第十四周作业01
- 算法第七周作业01
- 算法期末作业01
- 算法第十五周作业01
- 算法作业_35(2017.6.16第十七周)(算法机考模拟题3)
- 算法分析与设计课程作业第十七周#1#2
- 算法设计与结构基础作业第十七周
- 算法第八周作业01
- 算法课第十七周作业 | Same Tree
- 算法第十三周作业01
- 算法第十六周作业01
- 【中国大学mooc—浙江大学数据结构2018春】1.3节求最大子列和问题,算法3的实现(对应作业题目:01-复杂度1 最大子列和问题)
- 算法作业_32(2017.6.15第十七周)
- 第二周作业01 -- 素数的算法实现
- 算法第十八周作业01
- 算法第九周作业01
- 算法设计期末作业01-8.3
- 算法第五周作业01
- 计算机算法设计与分析作业01:分治法求解大数乘法+L型骨牌的棋盘覆盖问题