生成 1 到 n 的随机节点的二叉树的输出前序遍历和中序遍历来加深前序遍历 中序遍历的理解
第一步:创建一个二叉树结构
class TreeNode() {
constructor(val, left, right) {
this.val = (val===undefined ? 0 : val)
this.left = (left===undefined ? null : left)
this.right = (right===undefined ? null : right
}
}
第二步:随机插入节点
function insertRandomNode(root, val) {
if (root === null) return new TreeNode(val)
// 随机插入left 或 right
if (Math.random() > 0.5) {
root.left = insertRandomNode(root.left, val)
} lese {
root.right = insertRandomNode(root.right, val)
}
return root
}
第三步: 生成一个n个节点 val [1, n]的二叉树
function buildRandomTree(n) {
let root = null
for (let i = 0; i <= n; i++) {
root = insertRandomNode(i)
}
return root
}
第四部: 测试下
// 生成3个长度是5的tree
for (let i = 0; i < 3; i++) {
console.log(buildRandomTree(5))
}
{"val":1,"left":{"val":2,"left":{"val":5,"left":null,"right":null},"right":null},"right":{"val":3,"left":null,"right":{"val":4,"left":null,"right":null}}}
{"val":1,"left":{"val":2,"left":{"val":4,"left":null,"right":null},"right":null},"right":{"val":3,"left":{"val":5,"left":null,"right":null},"right":null}}
{"val":1,"left":{"val":2,"left":{"val":5,"left":null,"right":null},"right":{"val":3,"left":null,"right":null}},"right":{"val":4,"left":null,"right":null}}