十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
import java.util.LinkedList;/**
创新互联建站专注于安龙网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供安龙营销型网站建设,安龙网站制作、安龙网页设计、安龙网站官网定制、重庆小程序开发服务,打造安龙网络公司原创品牌,更为您提供安龙网站排名全网营销落地服务。
* 需求:按层打印一棵树
* 说明:树是保存在一个链表中
* created by wangjunfu on 2017-05-25. */
public class TreeNode {
String data;
TreeNode parent;
LinkedListTreeNode childlist;
TreeNode() {
data = null;
childlist = new LinkedList();
parent = null;
} //递归显示并打印一棵树
private static void displayTree(TreeNode f, int level) {
String preStr = ""; // 打印前缀
for (int i = 0; i level; i++) {
preStr += " ";
} for (int i = 0; i f.childlist.size(); i++) {
TreeNode t = f.childlist.get(i);
System.out.println(preStr + "-" + t.data); if (!t.childlist.isEmpty()) {
displayTree(t, level + 1);
}
}
}
}
你说的意思应该是用数组的方式存储二叉树,这需要利用到完全二叉树的性质,
,完全二叉树通常采用数组而不是链表存储,其存储结构如下:
var
tree:array[1..n]of
longint;{n:integer;n=1}
对于tree[i],有如下特点:
(1)若i为奇数且i1,那么tree的左兄弟为tree[i-1];
(2)若i为偶数且in,那么tree的右兄弟为tree[i+1];
(3)若i1,tree的双亲为tree[i
div
2];
(4)若2*i=n,那么tree的左孩子为tree[2*i];若2*i+1=n,那么tree的右孩子为tree[2*i+1];
(5)若in
div
2,那么tree[i]为叶子结点(对应于(3));
(6)若i(n-1)
div
2.那么tree[i]必有两个孩子(对应于(4))。
(7)满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树。
完全二叉树第i层至多有2^(i-1)个节点,共i层的完全二叉树最多有2^i-1个节点。
代码简单,网上很多,不懂也可以问我
你把它分成2个部分不就行了,上面的三角形一部分,下面的一部分,上面的用for循环就可以搞出来了
public class TestApp {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int i = 1;i=5;i++) {
for(int j=1;j=5-i;j++) {
System.out.print(" ");
}
for(int m=1;m=2*i+1;m++) {
System.out.print("*");
}
System.out.println();
}
for(int n=1;n=4;n++) {
System.out.println(" *****");
}
}
}