Skip to content

Commit c36580a

Browse files
committed
feat: update solutions to lcof problem
1 parent 77e6c4d commit c36580a

File tree

5 files changed

+57
-60
lines changed

5 files changed

+57
-60
lines changed

lcof/面试题28. 对称的二叉树/README.md

+28-29
Original file line numberDiff line numberDiff line change
@@ -58,16 +58,16 @@
5858

5959
class Solution:
6060
def isSymmetric(self, root: TreeNode) -> bool:
61+
def is_symmetric(left, right):
62+
if left is None and right is None:
63+
return True
64+
if left is None or right is None or left.val != right.val:
65+
return False
66+
return is_symmetric(left.left, right.right) and is_symmetric(left.right, right.left)
6167
if root is None:
6268
return True
63-
return self.symmetric(root.left, root.right)
69+
return is_symmetric(root.left, root.right)
6470

65-
def symmetric(self, node1, node2) -> bool:
66-
if node1 is None and node2 is None:
67-
return True
68-
if node1 is None or node2 is None or node1.val != node2.val:
69-
return False
70-
return self.symmetric(node1.left, node2.right) and self.symmetric(node1.right, node2.left)
7171
```
7272

7373
### **Java**
@@ -84,20 +84,14 @@ class Solution:
8484
*/
8585
class Solution {
8686
public boolean isSymmetric(TreeNode root) {
87-
if (root == null) {
88-
return true;
89-
}
87+
if (root == null) return true;
9088
return isSymmetric(root.left, root.right);
9189
}
9290

93-
private boolean isSymmetric(TreeNode node1, TreeNode node2) {
94-
if (node1 == null && node2 == null) {
95-
return true;
96-
}
97-
if (node1 == null || node2 == null || node1.val != node2.val) {
98-
return false;
99-
}
100-
return isSymmetric(node1.left, node2.right) && isSymmetric(node1.right, node2.left);
91+
private boolean isSymmetric(TreeNode left, TreeNode right) {
92+
if (left == null && right == null) return true;
93+
if (left == null || right == null || left.val != right.val) return false;
94+
return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
10195
}
10296
}
10397
```
@@ -117,10 +111,10 @@ class Solution {
117111
* @return {boolean}
118112
*/
119113
var isSymmetric = function (root) {
120-
function dfs(a, b) {
121-
if (!a && !b) return true;
122-
if (!a || !b) return false;
123-
return a.val === b.val && dfs(a.left, b.right) && dfs(a.right, b.left);
114+
function dfs(left, right) {
115+
if (!left && !right) return true;
116+
if (!left || !right || left.val != right.val) return false;
117+
return dfs(left.left, right.right) && dfs(left.right, right.left);
124118
}
125119
if (!root) return true;
126120
return dfs(root.left, root.right);
@@ -130,24 +124,29 @@ var isSymmetric = function (root) {
130124
### **Go**
131125

132126
```go
127+
/**
128+
* Definition for a binary tree node.
129+
* type TreeNode struct {
130+
* Val int
131+
* Left *TreeNode
132+
* Right *TreeNode
133+
* }
134+
*/
133135
func isSymmetric(root *TreeNode) bool {
134136
if root == nil {
135137
return true
136138
}
137139
return isSymme(root.Left, root.Right)
138140
}
139141

140-
func isSymme(a *TreeNode, b *TreeNode) bool {
141-
if a == nil && b == nil {
142+
func isSymme(left *TreeNode, right *TreeNode) bool {
143+
if left == nil && right == nil {
142144
return true
143145
}
144-
if a == nil || b ==nil {
145-
return false
146-
}
147-
if a.Val != b.Val {
146+
if left == nil || right == nil || left.Val != right.Val {
148147
return false
149148
}
150-
return isSymme(a.Left,b.Right) && isSymme(a.Right, b.Left)
149+
return isSymme(left.Left, right.Right) && isSymme(left.Right, right.Left)
151150
}
152151
```
153152

Original file line numberDiff line numberDiff line change
@@ -1,19 +1,24 @@
1-
func isSymmetric(root *TreeNode) bool {
1+
/**
2+
* Definition for a binary tree node.
3+
* type TreeNode struct {
4+
* Val int
5+
* Left *TreeNode
6+
* Right *TreeNode
7+
* }
8+
*/
9+
func isSymmetric(root *TreeNode) bool {
210
if root == nil {
311
return true
412
}
513
return isSymme(root.Left, root.Right)
614
}
715

8-
func isSymme(a *TreeNode, b *TreeNode) bool {
9-
if a == nil && b == nil {
16+
func isSymme(left *TreeNode, right *TreeNode) bool {
17+
if left == nil && right == nil {
1018
return true
1119
}
12-
if a == nil || b ==nil {
20+
if left == nil || right == nil || left.Val != right.Val {
1321
return false
1422
}
15-
if a.Val != b.Val {
16-
return false
17-
}
18-
return isSymme(a.Left,b.Right) && isSymme(a.Right, b.Left)
23+
return isSymme(left.Left, right.Right) && isSymme(left.Right, right.Left)
1924
}

lcof/面试题28. 对称的二叉树/Solution.java

+5-11
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,13 @@
99
*/
1010
class Solution {
1111
public boolean isSymmetric(TreeNode root) {
12-
if (root == null) {
13-
return true;
14-
}
12+
if (root == null) return true;
1513
return isSymmetric(root.left, root.right);
1614
}
1715

18-
private boolean isSymmetric(TreeNode node1, TreeNode node2) {
19-
if (node1 == null && node2 == null) {
20-
return true;
21-
}
22-
if (node1 == null || node2 == null || node1.val != node2.val) {
23-
return false;
24-
}
25-
return isSymmetric(node1.left, node2.right) && isSymmetric(node1.right, node2.left);
16+
private boolean isSymmetric(TreeNode left, TreeNode right) {
17+
if (left == null && right == null) return true;
18+
if (left == null || right == null || left.val != right.val) return false;
19+
return isSymmetric(left.left, right.right) && isSymmetric(left.right, right.left);
2620
}
2721
}

lcof/面试题28. 对称的二叉树/Solution.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
* @return {boolean}
1111
*/
1212
var isSymmetric = function (root) {
13-
function dfs(a, b) {
14-
if (!a && !b) return true;
15-
if (!a || !b) return false;
16-
return a.val === b.val && dfs(a.left, b.right) && dfs(a.right, b.left);
13+
function dfs(left, right) {
14+
if (!left && !right) return true;
15+
if (!left || !right || left.val != right.val) return false;
16+
return dfs(left.left, right.right) && dfs(left.right, right.left);
1717
}
1818
if (!root) return true;
1919
return dfs(root.left, root.right);

lcof/面试题28. 对称的二叉树/Solution.py

+7-8
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,12 @@
77

88
class Solution:
99
def isSymmetric(self, root: TreeNode) -> bool:
10+
def is_symmetric(left, right):
11+
if left is None and right is None:
12+
return True
13+
if left is None or right is None or left.val != right.val:
14+
return False
15+
return is_symmetric(left.left, right.right) and is_symmetric(left.right, right.left)
1016
if root is None:
1117
return True
12-
return self.symmetric(root.left, root.right)
13-
14-
def symmetric(self, node1, node2) -> bool:
15-
if node1 is None and node2 is None:
16-
return True
17-
if node1 is None or node2 is None or node1.val != node2.val:
18-
return False
19-
return self.symmetric(node1.left, node2.right) and self.symmetric(node1.right, node2.left)
18+
return is_symmetric(root.left, root.right)

0 commit comments

Comments
 (0)