查看: 2438| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

[CS 61B Spring 2015] Discussion 9

全局:
公开课
学校名称: UC Berkeley
Unit号: 9
开课时间: 2015-01-01
课程全名: CS 61B: Data Structures
平台: 其他

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
Discussion 9的内容是Binary Search Tree。

上一篇:UCSD CSE167 OpenGL Need Help!
下一篇:Coursera Python for everybody
🔗
 楼主| HNAKXR 2016-2-20 16:48:05 | 只看该作者
全局:
  1. import java.util.Arrays;

  2. public class BSTNode {
  3.         public BSTNode left, right;
  4.         public int value;

  5.         public BSTNode(int n) {
  6.                 value = n;
  7.         }

  8.         public static int[] slice(int[] arr, int begin, int end) {
  9.                 if (begin < 0 || begin > arr.length || end < 0 || end > arr.length
  10.                         || begin >= end) {
  11.                         return null;
  12.                 }
  13.                 int[] result = new int[end - begin];
  14.                 for (int i = 0, j = 0; i < arr.length; i++) {
  15.                         if (i >= begin && i < end) {
  16.                                 result[j] = arr[i];
  17.                                 j++;
  18.                         }
  19.                 }
  20.                 return result;
  21.         }

  22.         public static BSTNode makeBST(int[] nums) {
  23.                 if (nums.length == 0) {
  24.                         return null;
  25.                 } else if (nums.length == 1) {
  26.                         return new BSTNode(nums[0]);
  27.                 }
  28.                 int mid = nums.length / 2;
  29.                 BSTNode result = new BSTNode(nums[mid]);
  30.                 result.left = makeBST(slice(nums, 0, mid));
  31.                 result.right = makeBST(slice(nums, mid + 1, nums.length));
  32.                 return result;
  33.         }

  34.         /* Returns the BSTNode that is the shortest common ancestor of n1 and n2. */
  35.         public static BSTNode commonAncestor(BSTNode root, int n1, int n2) {
  36.                 if (n1 > n2) {
  37.                         return null;
  38.                 }
  39.                 if (n1 <= root.value && n2 >= root.value) {
  40.                         return root;
  41.                 }
  42.                 if (n1 > root.value) {
  43.                         return commonAncestor(root.right, n1, n2);
  44.                 }
  45.                 if (n2 < root.value) {
  46.                         return commonAncestor(root.left, n1, n2);
  47.                 }
  48.                 return null;
  49.         }
  50. }
复制代码

评分

参与人数 1大米 +20 收起 理由
zzwcsong + 20

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表