mirror of
https://github.com/krahets/hello-algo.git
synced 2025-11-02 12:58:42 +08:00
Optimize arrToTree function
in java, cpp, py, go, js, ts.
This commit is contained in:
@ -14,11 +14,11 @@ import (
|
||||
func TestLevelOrder(t *testing.T) {
|
||||
/* 初始化二叉树 */
|
||||
// 这里借助了一个从数组直接生成二叉树的函数
|
||||
root := ArrayToTree([]int{1, 2, 3, 4, 5, 6, 7})
|
||||
fmt.Println("初始化二叉树: ")
|
||||
root := ArrToTree([]int{1, 2, 3, 4, 5, 6, 7})
|
||||
fmt.Println("\n初始化二叉树: ")
|
||||
PrintTree(root)
|
||||
|
||||
// 层序遍历
|
||||
nums := levelOrder(root)
|
||||
fmt.Println("层序遍历的结点打印序列 =", nums)
|
||||
fmt.Println("\n层序遍历的结点打印序列 =", nums)
|
||||
}
|
||||
|
||||
@ -14,22 +14,22 @@ import (
|
||||
func TestPreInPostOrderTraversal(t *testing.T) {
|
||||
/* 初始化二叉树 */
|
||||
// 这里借助了一个从数组直接生成二叉树的函数
|
||||
root := ArrayToTree([]int{1, 2, 3, 4, 5, 6, 7})
|
||||
fmt.Println("初始化二叉树: ")
|
||||
root := ArrToTree([]int{1, 2, 3, 4, 5, 6, 7})
|
||||
fmt.Println("\n初始化二叉树: ")
|
||||
PrintTree(root)
|
||||
|
||||
// 前序遍历
|
||||
nums = nil
|
||||
preOrder(root)
|
||||
fmt.Println("前序遍历的结点打印序列 =", nums)
|
||||
fmt.Println("\n前序遍历的结点打印序列 =", nums)
|
||||
|
||||
// 中序遍历
|
||||
nums = nil
|
||||
inOrder(root)
|
||||
fmt.Println("中序遍历的结点打印序列 =", nums)
|
||||
fmt.Println("\n中序遍历的结点打印序列 =", nums)
|
||||
|
||||
// 后序遍历
|
||||
nums = nil
|
||||
postOrder(root)
|
||||
fmt.Println("后序遍历的结点打印序列 =", nums)
|
||||
fmt.Println("\n后序遍历的结点打印序列 =", nums)
|
||||
}
|
||||
|
||||
@ -22,8 +22,8 @@ func NewTreeNode(v int) *TreeNode {
|
||||
}
|
||||
}
|
||||
|
||||
// ArrayToTree Generate a binary tree with an array
|
||||
func ArrayToTree(arr []int) *TreeNode {
|
||||
// ArrToTree Generate a binary tree given an array
|
||||
func ArrToTree(arr []int) *TreeNode {
|
||||
if len(arr) <= 0 {
|
||||
return nil
|
||||
}
|
||||
@ -31,19 +31,19 @@ func ArrayToTree(arr []int) *TreeNode {
|
||||
// Let container.list as queue
|
||||
queue := list.New()
|
||||
queue.PushBack(root)
|
||||
i := 1
|
||||
i := 0
|
||||
for queue.Len() > 0 {
|
||||
// poll
|
||||
node := queue.Remove(queue.Front()).(*TreeNode)
|
||||
i++
|
||||
if i < len(arr) {
|
||||
node.Left = NewTreeNode(arr[i])
|
||||
queue.PushBack(node.Left)
|
||||
i++
|
||||
}
|
||||
i++
|
||||
if i < len(arr) {
|
||||
node.Right = NewTreeNode(arr[i])
|
||||
queue.PushBack(node.Right)
|
||||
i++
|
||||
}
|
||||
}
|
||||
return root
|
||||
|
||||
@ -11,7 +11,7 @@ import (
|
||||
|
||||
func TestTreeNode(t *testing.T) {
|
||||
arr := []int{2, 3, 5, 6, 7}
|
||||
node := ArrayToTree(arr)
|
||||
node := ArrToTree(arr)
|
||||
|
||||
// print tree
|
||||
PrintTree(node)
|
||||
|
||||
Reference in New Issue
Block a user