提交 d9d47d46 编写于 作者: 梦境迷离's avatar 梦境迷离

fix scala BTT.scala warnings, add scala leetcode 965

上级 99541e43
......@@ -40,6 +40,7 @@ Leetcode Scala 实现
* [检查平衡性](./src/main/scala/io/github/dreamylost/Leetcode_Interview_0404.scala)
* [叶子相似的树](./src/main/scala/io/github/dreamylost/Leetcode_872.scala)
* [递增顺序查找树](./src/main/scala/io/github/dreamylost/Leetcode_897.scala)
* [单值二叉树](./src/main/scala/io/github/dreamylost/Leetcode_965.scala)
## 链表
......
......@@ -39,34 +39,36 @@ object BTT extends App {
}
//前,144. Binary Tree Preorder Traversal (Medium)
@unchecked
def preorderTraversal(root: TreeNode): Seq[Int] = {
var ret = Seq[Int]()
var stack = Stack[TreeNode]()
stack = stack.push(root)
var stack = List[TreeNode]()
stack = root :: stack
while (stack.nonEmpty) {
val (node, s) = stack.pop2
val (node, s) = stack.head -> stack.tail
stack = s
if (node != null) {
ret = ret ++ Seq(node.value)
stack = stack.push(node.right) // 先右后左,保证左子树先遍历
stack = stack.push(node.left)
stack = node.right :: stack // 先右后左,保证左子树先遍历
stack = node.left :: stack
}
}
ret
}
//中, 94. Binary Tree Inorder Traversal (Medium)
@unchecked
def inorderTraversal(root: TreeNode): Seq[Int] = {
var ret = Seq[Int]()
var stack = Stack[TreeNode]()
var stack = List[TreeNode]()
if (root == null) return ret
var cur = root
while (cur != null || stack.nonEmpty) {
while (cur != null) {
stack = stack.push(cur)
stack = cur :: stack
cur = cur.left
}
val (node, s) = stack.pop2
val (node, s) = stack.head -> stack.tail
stack = s
ret = ret ++ Seq(node.value)
cur = node.right
......@@ -79,17 +81,18 @@ object BTT extends App {
* 前序遍历为 root -> left -> right,后序遍历为 left -> right -> root。可以修改前序遍历成为 root -> right -> left,那么这个顺序就和后序遍历正好相反。
*/
//后,145. Binary Tree Postorder Traversal (Medium)
@unchecked
def postorderTraversal(root: TreeNode): Seq[Int] = {
var ret = Seq[Int]()
var stack = Stack[TreeNode]()
stack = stack.push(root)
var stack = List[TreeNode]()
stack = root :: stack
while (stack.nonEmpty) {
val (node, s) = stack.pop2
val (node, s) = stack.head -> stack.tail
stack = s
if (node != null) {
ret = ret ++ Seq(node.value)
stack = stack.push(node.left) // 先右后左,保证左子树先遍历
stack = stack.push(node.right)
stack = node.left :: stack // 先右后左,保证左子树先遍历
stack = node.right :: stack
}
}
ret.reverse
......
......@@ -55,7 +55,7 @@ object Leetcode_501 extends App {
var ret = Array[Int]()
def inOrder(root: TreeNode): Unit = {
if (root == null) return;
if (root == null) return
inOrder(root.left)
if (preNode != null && preNode.value == root.value) {
curCount += 1
......
package io.github.dreamylost
/**
* 965. 单值二叉树
*
* 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。
*
* 只有给定的树是单值二叉树时,才返回 true;否则返回 false。
*
* @author 梦境迷离 dreamylost
* @since 2020-06-21
* @version v1.0
*/
object Leetcode_965 extends App {
val ret = isUnivalTree(TreeNodeData.treeData3_5())
println(ret)
/**
* 记录当前节点的前缀即可
* 540 ms,100.00%
* 50.8 MB,100.00%
*
* @param root
* @return
*/
def isUnivalTree(root: TreeNode): Boolean = {
var ret = true
var preNode: TreeNode = null
def helper(r: TreeNode): Unit = {
if (r == null) return
helper(r.left)
if (preNode != null && preNode.value != r.value) {
ret = false
}
preNode = r
helper(r.right)
}
helper(root)
ret
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册