博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode之Two Sum IV Input is a BST(Kotlin)
阅读量:6269 次
发布时间:2019-06-22

本文共 1497 字,大约阅读时间需要 4 分钟。

问题: Given a Binary Search Tree and a target number, return true if there exist two elements in the BST such that their sum is equal to the given target.


方法: 与TwoSum的解法差不多,不过需要在其中加入树的遍历,深度优先遍历和广度优先遍历都可以。把遍历到的值存入到map中,如果在后面能够找到与map中的值相加等于target的值就返回true,否则遍历结束后返回false。

具体实现:

class TwoSumIV {    private val map = mutableMapOf
() private var target = 0 class TreeNode(var `val`: Int = 0) { var left: TreeNode? = null var right: TreeNode? = null } /** * Definition for a binary tree node. * class TreeNode(var `val`: Int = 0) { * var left: TreeNode? = null * var right: TreeNode? = null * } */ fun findTarget(root: TreeNode?, k: Int): Boolean { target = k return find(root) } private fun find(root: TreeNode?): Boolean { if (root == null) { return false } if (map[root.`val`] != null) { return true } map.put(target - root.`val`, 1) return find(root.left) || find(root.right) }}/** * 5 * / \ * 3 6 * / \ \ * 2 4 7 */fun main(args: Array
) { val root = TwoSumIV.TreeNode(5) root.left = TwoSumIV.TreeNode(3) root.right = TwoSumIV.TreeNode(6) (root.left)?.left = TwoSumIV.TreeNode(2) (root.left)?.right = TwoSumIV.TreeNode(4) (root.right)?.right = TwoSumIV.TreeNode(7) val twoSumIV = TwoSumIV() val result = twoSumIV.findTarget(root, 15) println("result $result")}复制代码

有问题随时沟通

转载地址:http://nwvpa.baihongyu.com/

你可能感兴趣的文章
C#:关联程序和文件
查看>>
推荐科研软件
查看>>
gradle
查看>>
如何取消未知类型文件默认用记事本打开
查看>>
[Javascript] Immute Object
查看>>
Java 关于finally、static
查看>>
Posix mq和SystemV mq区别
查看>>
P6 EPPM Manual Installation Guide (Oracle Database)
查看>>
XMPP协议、IM、客户端互联详解
查看>>
PHP写文件函数
查看>>
mysql的sql_mode合理设置
查看>>
函数连续性与可导性
查看>>
linux下libevent安装
查看>>
用ip来获得用户所在地区信息
查看>>
卡尔曼滤波
查看>>
linux下面覆盖文件,如何实现直接覆盖,不提示
查看>>
CSS3阴影 box-shadow的使用和技巧总结
查看>>
Linux下高cpu解决方案
查看>>
SQL事务用法begin tran,commit tran和rollback tran的用法
查看>>
centos7 crontab笔记
查看>>