Skip to content

Commit be0ef14

Browse files
committed
添加 101. 对称二叉树 go版本
1 parent 7b3f8ea commit be0ef14

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

problems/0101.对称二叉树.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -363,6 +363,54 @@ Python:
363363

364364
Go:
365365

366+
```go
367+
/**
368+
* Definition for a binary tree node.
369+
* type TreeNode struct {
370+
* Val int
371+
* Left *TreeNode
372+
* Right *TreeNode
373+
* }
374+
*/
375+
// 递归
376+
func defs(left *TreeNode, right *TreeNode) bool {
377+
if left == nil && right == nil {
378+
return true;
379+
};
380+
if left == nil || right == nil {
381+
return false;
382+
};
383+
if left.Val != right.Val {
384+
return false;
385+
}
386+
return defs(left.Left, right.Right) && defs(right.Left, left.Right);
387+
}
388+
func isSymmetric(root *TreeNode) bool {
389+
return defs(root.Left, root.Right);
390+
}
391+
392+
// 迭代
393+
func isSymmetric(root *TreeNode) bool {
394+
var queue []*TreeNode;
395+
if root != nil {
396+
queue = append(queue, root.Left, root.Right);
397+
}
398+
for len(queue) > 0 {
399+
left := queue[0];
400+
right := queue[1];
401+
queue = queue[2:];
402+
if left == nil && right == nil {
403+
continue;
404+
}
405+
if left == nil || right == nil || left.Val != right.Val {
406+
return false;
407+
};
408+
queue = append(queue, left.Left, right.Right, right.Left, left.Right);
409+
}
410+
return true;
411+
}
412+
```
413+
366414

367415
JavaScript
368416
```javascript

0 commit comments

Comments
 (0)