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 dae2e4b

Browse files
update 4 leetcode
1 parent b2e3095 commit dae2e4b

File tree

4 files changed

+211
-0
lines changed

4 files changed

+211
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/*
2+
* @lc app=leetcode id=1022 lang=javascript
3+
*
4+
* [1022] Sum of Root To Leaf Binary Numbers
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* 递归遍历,然后使用函数参数来保存值
18+
* @param {TreeNode} root
19+
* @return {number}
20+
*/
21+
var sumRootToLeaf = function(root) {
22+
let ans = [];
23+
24+
function dfsSum(node, currentSum = '') {
25+
if (!node) {
26+
return null;
27+
}
28+
currentSum += node.val;
29+
if (node.left === null && node.right === null) {
30+
return ans.push(currentSum);
31+
} else {
32+
dfsSum(node.left, currentSum);
33+
dfsSum(node.right, currentSum);
34+
}
35+
}
36+
37+
dfsSum(root, '');
38+
39+
return ans.reduce((acc, cur) => acc + parseInt(cur, 2), 0);
40+
};
41+
// @lc code=end

‎leetcode/110.balanced-binary-tree.js

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* @lc app=leetcode id=110 lang=javascript
3+
*
4+
* [110] Balanced Binary Tree
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* 类似于 543 题取最大深度
18+
* @param {TreeNode} root
19+
* @return {boolean}
20+
*/
21+
var isBalanced = function(root) {
22+
let unBalanced = false;
23+
function dfs(node) {
24+
// 当前节点不存在或者已经判定是不平衡的树了,就停止
25+
if (!node || unBalanced) {
26+
return 0;
27+
}
28+
// 取出左右深度来比较
29+
let left = dfs(node.left);
30+
let right = dfs(node.right);
31+
// 超过平衡了,标记为不平衡
32+
if (Math.abs(left - right) > 1) {
33+
unBalanced = true;
34+
}
35+
// 取得当前节点的最深的深度,向上返回就是加一
36+
return Math.max(left, right) + 1;
37+
}
38+
39+
dfs(root);
40+
41+
return !unBalanced;
42+
};
43+
// @lc code=end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
/*
2+
* @lc app=leetcode id=515 lang=javascript
3+
*
4+
* [515] Find Largest Value in Each Tree Row
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* 迭代的方式
18+
* @param {TreeNode} root
19+
* @return {number[]}
20+
*/
21+
var largestValues = function(root) {
22+
if (!root) {
23+
return [];
24+
}
25+
let queues = [root]; // 保存用于迭代的队列
26+
let level = 0; // 保存层级
27+
let res = []; // 保存结果
28+
29+
while (queues.length) {
30+
let len = queues.length;
31+
32+
// 每一层的迭代
33+
while (len--) {
34+
const current = queues.shift();
35+
if (current) {
36+
// 设置默认值
37+
res[level] = res[level] || [Number.MIN_SAFE_INTEGER];
38+
// 如果当前值比较大,就覆盖填入
39+
if (res[level][0] < current.val) {
40+
res[level] = [current.val];
41+
}
42+
queues.push(current.left);
43+
queues.push(current.right);
44+
}
45+
}
46+
47+
// 递进层级
48+
level++;
49+
}
50+
51+
return res;
52+
};
53+
// @lc code=end
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
/*
2+
* @lc app=leetcode id=897 lang=javascript
3+
*
4+
* [897] Increasing Order Search Tree
5+
*/
6+
7+
// @lc code=start
8+
/**
9+
* Definition for a binary tree node.
10+
* function TreeNode(val, left, right) {
11+
* this.val = (val===undefined ? 0 : val)
12+
* this.left = (left===undefined ? null : left)
13+
* this.right = (right===undefined ? null : right)
14+
* }
15+
*/
16+
/**
17+
* 类似于链表的处理
18+
* @param {TreeNode} root
19+
* @return {TreeNode}
20+
*/
21+
var increasingBST = function(root) {
22+
// 新建一棵树节点哑结点
23+
let dummyNode = new TreeNode(-1);
24+
// 保存副本,用于遍历,不影响原来节点
25+
let rootAns = dummyNode;
26+
27+
function dfs(node) {
28+
if (!node) {
29+
return null;
30+
}
31+
dfs(node.left);
32+
// 在遍历过程中就直接实现节点
33+
rootAns.right = new TreeNode(node.val);
34+
rootAns.left = null;
35+
rootAns = rootAns.right;
36+
dfs(node.right);
37+
}
38+
dfs(root);
39+
40+
// 源节点的右边就是结果
41+
return dummyNode.right;
42+
};
43+
44+
var increasingBST2 = function(root) {
45+
// 把中序遍历的结果也就是递增的保存到数组中
46+
let res = [];
47+
function dfs(node) {
48+
if (!node) {
49+
return null;
50+
}
51+
dfs(node.left);
52+
res.push(node.val);
53+
dfs(node.right);
54+
}
55+
dfs(root);
56+
57+
let index = 0;
58+
59+
// 遍历数组来创建二叉树
60+
function createNode() {
61+
// 当索引到数组长度时停止
62+
if (index === res.length) {
63+
return null;
64+
}
65+
let node = new TreeNode(res[index]);
66+
index++;
67+
// 单向的,所以只需添加右边节点
68+
node.right = createNode();
69+
return node;
70+
}
71+
72+
return createNode();
73+
};
74+
// @lc code=end

0 commit comments

Comments
(0)

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