38 lines
723 B
Markdown
38 lines
723 B
Markdown
# 二叉树的中序遍历 (Binary Tree Inorder Traversal)
|
||
|
||
## 题目描述
|
||
|
||
给定一个二叉树的根节点,返回它的中序遍历。
|
||
|
||
## 解题思路
|
||
|
||
### 方法一:递归
|
||
|
||
### 方法二:迭代(栈)
|
||
|
||
## 解法
|
||
|
||
```go
|
||
func inorderTraversal(root *TreeNode) []int {
|
||
result := []int{}
|
||
stack := []*TreeNode{}
|
||
curr := root
|
||
|
||
for curr != nil || len(stack) > 0 {
|
||
for curr != nil {
|
||
stack = append(stack, curr)
|
||
curr = curr.Left
|
||
}
|
||
|
||
curr = stack[len(stack)-1]
|
||
stack = stack[:len(stack)-1]
|
||
result = append(result, curr.Val)
|
||
curr = curr.Right
|
||
}
|
||
|
||
return result
|
||
}
|
||
```
|
||
|
||
**复杂度:** O(n) 时间,O(n) 空间
|