-
Notifications
You must be signed in to change notification settings - Fork 1
/
leetcode-101-symmetricTree.js
110 lines (90 loc) · 2.91 KB
/
leetcode-101-symmetricTree.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
var isSymmetric = function (root) {
if (!root) return true;
const iss = (l, r) => {
if (!l && !r) return true;
if (!l || !r || l.val !== r.val) return false;
return iss(l.right, r.left) && iss(l.left, r.right);
};
return iss(root.left, root.right);
};
// var isSymmetric = function(root) {
// if (!root) return true;
// const stack = [[root.left, root.right]];
// while (stack.length > 0) {
// const [l, r] = stack.pop();
// if (!l && !r) continue;
// if (!l || !r || l.val !== r.val) return false;
// stack.push([l.right, r.left], [l.left, r.right])
// }
// return true;
// };
// // /**
// // * Definition for a binary tree node.
// // * function TreeNode(val, left, right) {
// // * this.val = (val===undefined ? 0 : val)
// // * this.left = (left===undefined ? null : left)
// // * this.right = (right===undefined ? null : right)
// // * }
// // */
// // /**
// // * @param {TreeNode} root
// // * @return {boolean}
// // */
// // // p: binary tree root;
// // // r: boolean;
// // iterative O(n) O(n)
// var isSymmetric = function (root) {
// if (!root) return true;
// const stack = [[root.left, root.right]];
// while (stack.length > 0) {
// const [left, right] = stack.pop();
// if (!left && !right) continue;
// if (!left || !right || left.val !== right.val) return false;
// stack.push([left.left, right.right], [left.right, right.left]);
// }
// return true;
// };
// // // recursive O(nodes) O(nodes)
// // var isSymmetric = function (root) {
// // if (!root) return true;
// // var _isSymmetric = function (left, right) {
// // if (!left && !right) return true;
// // if (!left || !right || left.val !== right.val) return false;
// // return (
// // _isSymmetric(left.left, right.right) &&
// // _isSymmetric(left.right, right.left)
// // );
// // };
// // return _isSymmetric(root.left, root.right);
// // };
// // // e: 3241423
// // // 0231023
// // ALL WRONG
// // // var isSymmetric = function(root) {
// // // const stack = [root];
// // // while (stack.length > 0) {
// // // const c = stack.pop();
// // // }
// // // };
// // // 2201220
// // var isSymmetric = function (root) {
// // const vals = _isSymmetric(root);
// // let i = 0,
// // j = vals.length - 1;
// // console.log(vals);
// // while (i <= j) {
// // if (vals[i] !== vals[j]) return false;
// // i++;
// // j--;
// // }
// // return true;
// // };
// // var _isSymmetric = function (root) {
// // if (!root) return [];
// // if (!root.left && !root.right) return [root.val];
// // const left = _isSymmetric(root.left);
// // const right = _isSymmetric(root.right);
// // if (!root.left && root.right) return [null, root.val, ...right];
// // if (root.left && !root.right) return [...left, root.val, null];
// // return [...left, root.val, ...right];
// // };