校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > UI专业知识 > 色彩
题目

用一维数组存储二叉树时,总是以前序遍历顺序存储结点()

A.

B.

解答

正确答案是 B

总是以层次遍历的顺序存储,并且按照完全二叉树的方式建立,所以有很多空节点,会浪费存储空间,完全二叉树可以非常方便地找到孩子兄弟和双亲

C 4条回复 评论
Aliens

整个看下来还是感觉迷迷糊糊的

发表于 2021-10-11 23:00:00
0 0
猪猪猪

按照层次遍历的顺序存储

发表于 2018-11-01 15:09:58
0 0
大葫芦

按照从上到下,从左到右的顺序树存,一般二叉树会增添一些空节点形成完全二叉树

发表于 2018-11-01 15:09:21
0 0
浅色回忆

按照层次遍历;但是话要说回来,按层遍历,其实就是使用先序遍历,分层遍历二叉树的。

遍历每一层,将每个节点的子节点push进queue队列
import java.util.Queue;
import java.util.LinkedList;
class TreeNode{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val) {
this.val = val;
this.left = null;
this.right = null;
}
}

public class Main {
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
TreeNode node2 = new TreeNode(2);
TreeNode node3 = new TreeNode(3);
TreeNode node4 = new TreeNode(4);
TreeNode node5 = new TreeNode(5);
TreeNode node6 = new TreeNode(6);
TreeNode node7 = new TreeNode(7);
root.left = node2;
root.right = node3;
node2.left = node4;
node2.right = node5;
node3.left = node6;
node3.right = node7;

Queue<TreeNode> queue = new LinkedList<>();
queue.offer(root);

while(!queue.isEmpty()) {
//根
TreeNode temp = queue.poll();
System.out.printf("%d ", temp.val);
//左
if(temp.left != null) {
queue.offer(temp.left);
}
//右
if(temp.right != null) {
queue.offer(temp.right);
}
}
}
}

//打印结果:
1 2 3 4 5 6 7


发表于 2018-11-01 15:09:07
0 0