56
56
# self.right = right
57
57
class Solution :
58
58
def isUnivalTree (self , root : TreeNode) -> bool :
59
- def dfs (root ):
60
- if root is None :
59
+ def dfs (node ):
60
+ if node is None :
61
61
return True
62
- if root.val != self .val:
63
- return False
64
- return dfs(root.left) and dfs(root.right)
62
+ return node.val == root.val and dfs(node.left) and dfs(node.right)
65
63
66
- self .val = root.val
67
64
return dfs(root)
68
65
```
69
66
@@ -88,21 +85,15 @@ class Solution:
88
85
* }
89
86
*/
90
87
class Solution {
91
- private int val;
92
-
93
88
public boolean isUnivalTree (TreeNode root ) {
94
- val = root. val;
95
- return dfs(root);
89
+ return dfs(root, root. val);
96
90
}
97
91
98
- private boolean dfs (TreeNode root ) {
92
+ private boolean dfs (TreeNode root , int val ) {
99
93
if (root == null ) {
100
94
return true ;
101
95
}
102
- if (root. val != val) {
103
- return false ;
104
- }
105
- return dfs(root. left) && dfs(root. right);
96
+ return root. val == val && dfs(root. left, val) && dfs(root. right, val);
106
97
}
107
98
}
108
99
```
@@ -123,17 +114,13 @@ class Solution {
123
114
*/
124
115
class Solution {
125
116
public:
126
- int val;
127
-
128
117
bool isUnivalTree(TreeNode* root) {
129
- val = root->val;
130
- return dfs(root);
118
+ return dfs(root, root->val);
131
119
}
132
120
133
- bool dfs (TreeNode* root) {
134
- if (root == nullptr) return true;
135
- if (root->val != val) return false;
136
- return dfs(root->left) && dfs(root->right);
121
+ bool dfs(TreeNode* root, int val) {
122
+ if (!root) return true;
123
+ return root->val == val && dfs(root->left, val) && dfs(root->right, val);
137
124
}
138
125
};
139
126
```
@@ -150,17 +137,14 @@ public:
150
137
* }
151
138
*/
152
139
func isUnivalTree (root *TreeNode ) bool {
153
- return dfs(root, root.Val)
154
- }
155
-
156
- func dfs(root *TreeNode, val int) bool {
157
- if root == nil {
158
- return true
159
- }
160
- if root.Val != val {
161
- return false
140
+ var dfs func (*TreeNode) bool
141
+ dfs = func (node *TreeNode) bool {
142
+ if node == nil {
143
+ return true
144
+ }
145
+ return node.Val == root.Val && dfs (node.Left ) && dfs (node.Right )
162
146
}
163
- return dfs(root.Left, val) && dfs(root.Right, val )
147
+ return dfs (root)
164
148
}
165
149
```
166
150
0 commit comments