您现在的位置是:主页 > news > 合肥网站建设ijwww/拉新推广一手接单平台

合肥网站建设ijwww/拉新推广一手接单平台

admin2025/5/5 12:47:52news

简介合肥网站建设ijwww,拉新推广一手接单平台,佛山做网站建设,营销网站试用题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 分析 第一反应可以按照普通的层次遍历然后再把第2、4、6等等偶数层的…

合肥网站建设ijwww,拉新推广一手接单平台,佛山做网站建设,营销网站试用题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推 分析 第一反应可以按照普通的层次遍历然后再把第2、4、6等等偶数层的…

题目描述

请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推

分析

第一反应可以按照普通的层次遍历然后再把第2、4、6等等偶数层的结果翻转一下,但是那样子效率太低。
上网查阅可以使用双向队列,即两头都可以进和出。需要从左到右打印的从队列头部进入和弹出,需要从右往左打印的从队列尾部进入和弹出

代码实现

/* function TreeNode(x) {this.val = x;this.left = null;this.right = null;
} */function Print(r)
{if(r === null)return [];var ds = [];var dir = "r";var res = [];ds.unshift(null);ds.unshift(r);while(ds.length > 1) {var temp = [];if(dir === 'r'){var cur = ds.shift();while(cur !== null) {temp.push(cur.val);if(cur.left !== null)ds.push(cur.left);if(cur.right !== null)ds.push(cur.right)cur = ds.shift();}ds.unshift(null);}else{var cur = ds.pop();while(cur !== null){temp.push(cur.val);if(cur.right !== null)ds.unshift(cur.right);if(cur.left !== null)ds.unshift(cur.left);cur = ds.pop();}ds.push(null);}res.push(temp);dir = dir === "r" ? "l" : "r";}return res;
}module.exports = {Print : Print
};
复制代码