js:根据给定数组构造二叉树

刷题的时候经常会遇到二叉树的题,题目中给定的一般都是数组形式,可以在线调试。
但是在本地编译器的话,需要转为二叉树形式才能进行代码调试。

1、给定数组

var root = [3,9,20,null,null,15,7];

2、定义【树节点】类

function TreeNode(val, level) {
    
    
	this.val = val;
	this.left = null;
	this.right = null;
}

3、构造二叉树

function buildTree(val_list) {
    
    
	// 数组为空
	if(!val_list || val_list.length === 0)
		return ;
		
	// 根节点
	var root = new TreeNode(val_list.shift());
	
	var nodeQueue = [root];
	
	// 对root节点进行操作,更新node
	while(val_list.length > 0){
    
    
		var node  = nodeQueue.shift();
		// n = node.level + 1;	// 获取父节点的层级,子节点在该层级上+1
		
		// 构建:左孩子节点
		if(val_list.length === 0)
			break;
		var leftVal = val_list.shift();
		if(leftVal) {
    
    
			node.left = new TreeNode(leftVal);
			nodeQueue.push(node.left);
		}
		
		// 构建:右孩子节点
		if(val_list.length === 0)
			break;
		var rightVal = val_list.shift();
		if(rightVal) {
    
    
			node.right = new TreeNode(rightVal);
			nodeQueue.push(node.right);
		}
	}
	
	return root;
}

4、调用

let tree = buildTree(root);
console.log(tree)

结果:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_38432089/article/details/124868010