Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张文治(治)
BoomerPlusLocust
提交
180cb912
B
BoomerPlusLocust
项目概览
张文治(治)
/
BoomerPlusLocust
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
B
BoomerPlusLocust
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
180cb912
编写于
1月 14, 2023
作者:
张文治(治)
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add new file
上级
aa91d492
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
171 addition
and
0 deletion
+171
-0
datastructure/treenode.go
datastructure/treenode.go
+171
-0
未找到文件。
datastructure/treenode.go
0 → 100644
浏览文件 @
180cb912
package
datastructure
import
(
"strconv"
"strings"
)
// TreeNode 二叉树结构 Definition for a binary tree node.
type
TreeNode
struct
{
Val
int
Left
*
TreeNode
Right
*
TreeNode
}
/*
二叉树转一维数组: 二叉树遍历(前中后)
*/
// PreorderTraversal 144. 二叉树的前序遍历
func
PreorderTraversal
(
root
*
TreeNode
)
(
vales
[]
int
)
{
var
preorder
func
(
*
TreeNode
)
preorder
=
func
(
node
*
TreeNode
)
{
if
node
==
nil
{
return
}
vales
=
append
(
vales
,
node
.
Val
)
preorder
(
node
.
Left
)
preorder
(
node
.
Right
)
}
preorder
(
root
)
return
}
// PostorderTraversal 145. 二叉树的后序遍历
func
PostorderTraversal
(
root
*
TreeNode
)
(
res
[]
int
)
{
var
postorder
func
(
*
TreeNode
)
postorder
=
func
(
node
*
TreeNode
)
{
if
node
==
nil
{
return
}
postorder
(
node
.
Left
)
postorder
(
node
.
Right
)
res
=
append
(
res
,
node
.
Val
)
}
postorder
(
root
)
return
}
// InorderTraversal 94. 二叉树的中序遍历
func
InorderTraversal
(
root
*
TreeNode
)
(
res
[]
int
)
{
var
inorder
func
(
node
*
TreeNode
)
inorder
=
func
(
node
*
TreeNode
)
{
if
node
==
nil
{
return
}
inorder
(
node
.
Left
)
res
=
append
(
res
,
node
.
Val
)
inorder
(
node
.
Right
)
}
inorder
(
root
)
return
}
/*
一维整形数组转二叉树)
*/
// BstFromPreorder 1008. 前序遍历构造二叉搜索树 (一维整形数组转二叉树)
func
BstFromPreorder
(
preorder
[]
int
)
*
TreeNode
{
if
divide
:=
len
(
preorder
);
divide
>
0
{
for
i
,
val
:=
range
preorder
{
if
val
>
preorder
[
0
]
{
divide
=
i
break
}
}
return
&
TreeNode
{
Val
:
preorder
[
0
],
Left
:
BstFromPreorder
(
preorder
[
1
:
divide
]),
Right
:
BstFromPreorder
(
preorder
[
divide
:
]),
}
}
return
nil
}
/*
二叉树转二维数组(层序遍历)
*/
// LevelOrder 102. 二叉树的层序遍历
func
LevelOrder
(
root
*
TreeNode
)
[][]
int
{
var
ret
[][]
int
if
root
==
nil
{
return
ret
}
q
:=
[]
*
TreeNode
{
root
}
for
i
:=
0
;
len
(
q
)
>
0
;
i
++
{
ret
=
append
(
ret
,
[]
int
{})
var
p
[]
*
TreeNode
for
j
:=
0
;
j
<
len
(
q
);
j
++
{
node
:=
q
[
j
]
ret
[
i
]
=
append
(
ret
[
i
],
node
.
Val
)
if
node
.
Left
!=
nil
{
p
=
append
(
p
,
node
.
Left
)
}
if
node
.
Right
!=
nil
{
p
=
append
(
p
,
node
.
Right
)
}
}
q
=
p
}
return
ret
}
/*
字符串转二叉树
*/
// StringToTreeNode 字符串转二叉树
func
StringToTreeNode
(
input
string
)
(
root
*
TreeNode
)
{
s
:=
strings
.
TrimLeft
(
input
,
"["
)
s
=
strings
.
TrimRight
(
s
,
"]"
)
arr
:=
strings
.
Split
(
s
,
","
)
if
len
(
arr
)
==
0
||
arr
[
0
]
==
"null"
{
return
}
root
=
new
(
TreeNode
)
root
.
Val
,
_
=
strconv
.
Atoi
(
arr
[
0
])
arr
=
arr
[
1
:
]
queue
:=
[]
*
TreeNode
{
root
}
for
len
(
queue
)
>
0
&&
len
(
arr
)
>
0
{
node
:=
queue
[
0
]
queue
:=
queue
[
1
:
]
if
arr
[
0
]
!=
"null"
{
node
.
Left
=
new
(
TreeNode
)
node
.
Left
.
Val
,
_
=
strconv
.
Atoi
(
arr
[
0
])
queue
=
append
(
queue
,
node
.
Left
)
}
arr
=
arr
[
1
:
]
if
len
(
arr
)
>
0
{
if
arr
[
0
]
!=
"null"
{
node
.
Right
=
new
(
TreeNode
)
node
.
Right
.
Val
,
_
=
strconv
.
Atoi
(
arr
[
0
])
queue
=
append
(
queue
,
node
.
Right
)
}
arr
=
arr
[
1
:
]
}
}
// root 可写可不写
return
////input = input[1:-1] 报错
//rs := []rune(input)
//input = string(rs[1:len(input)-1])
//// input != nil 报错
//if len(input) == 0 {
// return
//}
//
//inputValues := strings.Split(input, ",")
//for i := 0; i < len(inputValues); i++ {
// inputValues[i] = strings.Trim(inputValues[i], "")
//}
//
//// int: strconv.Atoi(inputValues[0])
//// int64: strconv.ParseInt(inputValues[0])
//root := TreeNode(strconv.Atoi(inputValues[0])) // TreeNode 报错??
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录