重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
import java.util.LinkedList;/**
創(chuàng)新互聯(lián)建站專注于安龍網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供安龍營銷型網(wǎng)站建設(shè),安龍網(wǎng)站制作、安龍網(wǎng)頁設(shè)計(jì)、安龍網(wǎng)站官網(wǎng)定制、重慶小程序開發(fā)服務(wù),打造安龍網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供安龍網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
* 需求:按層打印一棵樹
* 說明:樹是保存在一個(gè)鏈表中
* 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);
}
}
}
}
你說的意思應(yīng)該是用數(shù)組的方式存儲(chǔ)二叉樹,這需要利用到完全二叉樹的性質(zhì),
,完全二叉樹通常采用數(shù)組而不是鏈表存儲(chǔ),其存儲(chǔ)結(jié)構(gòu)如下:
var
tree:array[1..n]of
longint;{n:integer;n=1}
對(duì)于tree[i],有如下特點(diǎn):
(1)若i為奇數(shù)且i1,那么tree的左兄弟為tree[i-1];
(2)若i為偶數(shù)且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]為葉子結(jié)點(diǎn)(對(duì)應(yīng)于(3));
(6)若i(n-1)
div
2.那么tree[i]必有兩個(gè)孩子(對(duì)應(yīng)于(4))。
(7)滿二叉樹一定是完全二叉樹,完全二叉樹不一定是滿二叉樹。
完全二叉樹第i層至多有2^(i-1)個(gè)節(jié)點(diǎn),共i層的完全二叉樹最多有2^i-1個(gè)節(jié)點(diǎn)。
代碼簡單,網(wǎng)上很多,不懂也可以問我
你把它分成2個(gè)部分不就行了,上面的三角形一部分,下面的一部分,上面的用for循環(huán)就可以搞出來了
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(" *****");
}
}
}