class Node {
constructor(value, left, right) {
this.value = value;
this.left = left;
this.right = right;
}
}
let n1 = new Node(1, null, null);
let n2 = new Node(2, null, null);
let n4 = new Node(4, n1, n2);
let n6 = new Node(6, null, null);
let root = new Node(5, n4, n6);
function fn(root) {
let result = 0
let queue = []
queue.push(root)
while (queue.length) {
let size = queue.length
for (let i = 0; i < size; i++) {
let node = queue.shift()
if (i == 0) {
result = node.value
}
node.left && queue.push(node.left)
node.right && queue.push(node.right)
}
}
return result
}
console.log('层序遍历结果:' + fn(root))
function fn2(root) {
let result = 0
let 最大深度 = 0
function 递归(node, 当前深度) {
if (node.left == null && node.right == null) {
if (当前深度 > 最大深度) {
最大深度 = 当前深度
result = node.value
}
return
}
node.left && 递归(node.left, 当前深度 + 1)
node.right && 递归(node.right, 当前深度 + 1)
}
递归(root, 1)
return result
}
console.log('递归实现结果:' + fn2(root))
console