您的位置:首页 > 职场人生

面试题23:从上到下打印二叉树

2017-07-30 23:46 316 查看

剑指offer面试题23:从上到下打印二叉树

题目描述:从上到下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印。

function Queue() {
var items = [];
this.enqueue = function(element) {
items.push(element);
}
this.dequeue = function() {
return items.shift();
}
this.isEmpty = function() {
return items.length === 0;
}
this.front = function() {
return items[0];
}
}

function BinarySearchTree() {
var Node = function(key) {
this.key = key;
this.left = null;
this.right = null;
}
var root = null;

this.insert = function(key) {
var newNode = new Node(key);
if(root === null) {
root = newNode;
}else{
insertNode(root, newNode);
}
}
var insertNode = function(node, newNode) {
if(newNode.key < node.key) {
if(node.left === null) {
node.left = newNode;
} else {
insertNode(node.left, newNode);
}
} else{
if(node.right === null) {
node.right = newNode;
} else {
insertNode(node.right, newNode);
}
}
}
this.root = function() {
return root;
}
}

function PrintFromTopBottom(tree) {
var queue = new Queue();
if(!tree) {
return false;
}
queue.enqueue(tree.root());
while(!queue.isEmpty()) {
var node = queue.front();
queue.dequeue();
console.log(node.key);
if(node.left !== null) {
queue.enqueue(node.left);
}
if(node.right !== null) {
queue.enqueue(node.right);
}
}
}

var tree = new BinarySearchTree();
tree.insert(8);
tree.insert(6);
tree.insert(10);
tree.insert(5);
tree.insert(7);
tree.insert(9);
tree.insert(11);

PrintFromTopBottom(tree);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息