Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit db289de

Browse files
committed
update postorder
1 parent 5c52e57 commit db289de

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

‎problems/0145.binary-tree-postorder-traversal/run.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,3 +54,26 @@ func portorderFor(root *TreeNode) []int {
5454
}
5555
return l
5656
}
57+
58+
func postorder(root *TreeNode) []int {
59+
var a []int
60+
stk := make([]*TreeNode, 0)
61+
var prev *TreeNode
62+
for root != nil || len(stk) > 0 {
63+
for root != nil {
64+
stk = append(stk, root)
65+
root = root.Left
66+
}
67+
root = stk[len(stk)-1]
68+
stk = stk[:len(stk)-1]
69+
if root.Right == nil || root.Right == prev {
70+
a = append(a, root.Val)
71+
prev = root
72+
root = nil
73+
} else {
74+
stk = append(stk, root)
75+
root = root.Right
76+
}
77+
}
78+
return a
79+
}

‎problems/0145.binary-tree-postorder-traversal/run_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,7 @@ func TestPostorderTraversal(t *testing.T) {
3333
func TestPostorderFor(t *testing.T) {
3434
t.Log(portorderFor(tn))
3535
}
36+
37+
func TestPostorder(t *testing.T) {
38+
t.Log(postorder(tn))
39+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /