update: stack to queue

This commit is contained in:
qingyi.liu
2021-05-31 17:19:02 +08:00
parent 58437eb296
commit 4a5c0cb75b

View File

@ -1224,15 +1224,15 @@ var rightSideView = function(root) {
// 迭代
var averageOfLevels = function(root) {
const stack = [], res = [];
root && stack.push(root);
while(len = stack.length) {
const queue = [], res = [];
root && queue.push(root);
while(len = queue.length) {
let sum = 0, l = len;
while(l--) {
const {val, left, right} = stack.shift();
const {val, left, right} = queue.shift();
sum += val;
left && stack.push(left);
right && stack.push(right);
left && queue.push(left);
right && queue.push(right);
}
res.push(sum/len);
}
@ -1263,15 +1263,15 @@ var averageOfLevels = function(root) {
// 迭代
const MIN_G = Number.MIN_SAFE_INTEGER;
var largestValues = function(root) {
const stack = [], res = [];
root && stack.push(root);
while(len = stack.length) {
const queue = [], res = [];
root && queue.push(root);
while(len = queue.length) {
let max = MIN_G;
while(len--) {
const {val, left, right} = stack.shift();
const {val, left, right} = queue.shift();
max = max > val ? max : val;
left && stack.push(left);
right && stack.push(right);
left && queue.push(left);
right && queue.push(right);
}
res.push(max);
}
@ -1300,15 +1300,15 @@ var largestValues = function(root) {
// 迭代
var levelOrder = function(root) {
const stack = [], res = [];
root && stack.push(root);
while(len = stack.length) {
const queue = [], res = [];
root && queue.push(root);
while(len = queue.length) {
const vals = [];
while(len--) {
const {val, children} = stack.shift();
const {val, children} = queue.shift();
vals.push(val);
for(const e of children) {
stack.push(e);
queue.push(e);
}
}
res.push(vals);
@ -1341,15 +1341,15 @@ var levelOrder = function(root) {
// 迭代
var connect = function(root) {
const stack = [];
root && stack.push(root);
while(len = stack.length) {
const queue = [];
root && queue.push(root);
while(len = queue.length) {
while(len--) {
const node1 = stack.shift(),
node2 = len ? stack[0] : null;
const node1 = queue.shift(),
node2 = len ? queue[0] : null;
node1.next = node2;
node1.left && stack.push(node1.left);
node1.right && stack.push(node1.right);
node1.left && queue.push(node1.left);
node1.right && queue.push(node1.right);
}
}
return root;