真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java的樹的代碼怎么打 樹的代碼實現(xiàn)

用java怎么構(gòu)造一個二叉樹呢?

java構(gòu)造二叉樹,可以通過鏈表來構(gòu)造,如下代碼:

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供漳平網(wǎng)站建設(shè)、漳平做網(wǎng)站、漳平網(wǎng)站設(shè)計、漳平網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、漳平企業(yè)網(wǎng)站模板建站服務(wù),10余年漳平做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

public?class?BinTree?{

public?final?static?int?MAX=40;

BinTree?[]elements?=?new?BinTree[MAX];//層次遍歷時保存各個節(jié)點

int?front;//層次遍歷時隊首

int?rear;//層次遍歷時隊尾

private?Object?data;?//數(shù)據(jù)元數(shù)

private?BinTree?left,right;?//指向左,右孩子結(jié)點的鏈

public?BinTree()

{

}

public?BinTree(Object?data)

{?//構(gòu)造有值結(jié)點

this.data?=?data;

left?=?right?=?null;

}

public?BinTree(Object?data,BinTree?left,BinTree?right)

{?//構(gòu)造有值結(jié)點

this.data?=?data;

this.left?=?left;

this.right?=?right;

}

public?String?toString()

{

return?data.toString();

}

//前序遍歷二叉樹

public?static?void?preOrder(BinTree?parent){?

if(parent?==?null)

return;

System.out.print(parent.data+"?");

preOrder(parent.left);

preOrder(parent.right);

}

//中序遍歷二叉樹

public?void?inOrder(BinTree?parent){

if(parent?==?null)

return;

inOrder(parent.left);

System.out.print(parent.data+"?");

inOrder(parent.right);

}

//后序遍歷二叉樹

public?void?postOrder(BinTree?parent){

if(parent?==?null)

return;

postOrder(parent.left);

postOrder(parent.right);

System.out.print(parent.data+"?");

}

//?層次遍歷二叉樹?

public?void?LayerOrder(BinTree?parent)

{?

elements[0]=parent;

front=0;rear=1;

while(frontrear)

{

try

{

if(elements[front].data!=null)

{

System.out.print(elements[front].data?+?"?");

if(elements[front].left!=null)

elements[rear++]=elements[front].left;

if(elements[front].right!=null)

elements[rear++]=elements[front].right;

front++;

}

}catch(Exception?e){break;}

}

}

//返回樹的葉節(jié)點個數(shù)

public?int?leaves()

{

if(this?==?null)

return?0;

if(left?==?nullright?==?null)

return?1;

return?(left?==?null???0?:?left.leaves())+(right?==?null???0?:?right.leaves());

}

//結(jié)果返回樹的高度

public?int?height()

{

int?heightOfTree;

if(this?==?null)

return?-1;

int?leftHeight?=?(left?==?null???0?:?left.height());

int?rightHeight?=?(right?==?null???0?:?right.height());

heightOfTree?=?leftHeightrightHeight?rightHeight:leftHeight;

return?1?+?heightOfTree;

}

//如果對象不在樹中,結(jié)果返回-1;否則結(jié)果返回該對象在樹中所處的層次,規(guī)定根節(jié)點為第一層

public?int?level(Object?object)

{

int?levelInTree;

if(this?==?null)

return?-1;

if(object?==?data)

return?1;//規(guī)定根節(jié)點為第一層

int?leftLevel?=?(left?==?null?-1:left.level(object));

int?rightLevel?=?(right?==?null?-1:right.level(object));

if(leftLevel0rightLevel0)

return?-1;

levelInTree?=?leftLevelrightLevel?rightLevel:leftLevel;

return?1+levelInTree;

}

//將樹中的每個節(jié)點的孩子對換位置

public?void?reflect()

{

if(this?==?null)

return;

if(left?!=?null)

left.reflect();

if(right?!=?null)

right.reflect();

BinTree?temp?=?left;

left?=?right;

right?=?temp;

}

//?將樹中的所有節(jié)點移走,并輸出移走的節(jié)點

public?void?defoliate()

{

if(this?==?null)

return;

//若本節(jié)點是葉節(jié)點,則將其移走

if(left==nullright?==?null)

{

System.out.print(this?+?"?");

data?=?null;

return;

}

//移走左子樹若其存在

if(left!=null){

left.defoliate();

left?=?null;

}

//移走本節(jié)點,放在中間表示中跟移走...

String?innerNode?+=?this?+?"?";

data?=?null;

//移走右子樹若其存在

if(right!=null){

right.defoliate();

right?=?null;

}

}

/**

*?@param?args

*/

public?static?void?main(String[]?args)?{

//?TODO?Auto-generated?method?stub

BinTree?e?=?new?BinTree("E");

BinTree?g?=?new?BinTree("G");

BinTree?h?=?new?BinTree("H");

BinTree?i?=?new?BinTree("I");

BinTree?d?=?new?BinTree("D",null,g);

BinTree?f?=?new?BinTree("F",h,i);

BinTree?b?=?new?BinTree("B",d,e);

BinTree?c?=?new?BinTree("C",f,null);

BinTree?tree?=?new?BinTree("A",b,c);

System.out.println("前序遍歷二叉樹結(jié)果:?");

tree.preOrder(tree);

System.out.println();

System.out.println("中序遍歷二叉樹結(jié)果:?");

tree.inOrder(tree);

System.out.println();

System.out.println("后序遍歷二叉樹結(jié)果:?");

tree.postOrder(tree);

System.out.println();

System.out.println("層次遍歷二叉樹結(jié)果:?");

tree.LayerOrder(tree);

System.out.println();

System.out.println("F所在的層次:?"+tree.level("F"));

System.out.println("這棵二叉樹的高度:?"+tree.height());

System.out.println("--------------------------------------");

tree.reflect();

System.out.println("交換每個節(jié)點的孩子節(jié)點后......");

System.out.println("前序遍歷二叉樹結(jié)果:?");

tree.preOrder(tree);

System.out.println();

System.out.println("中序遍歷二叉樹結(jié)果:?");

tree.inOrder(tree);

System.out.println();

System.out.println("后序遍歷二叉樹結(jié)果:?");

tree.postOrder(tree);

System.out.println();

System.out.println("層次遍歷二叉樹結(jié)果:?");

tree.LayerOrder(tree);

System.out.println();

System.out.println("F所在的層次:?"+tree.level("F"));

System.out.println("這棵二叉樹的高度:?"+tree.height());

}

如何用java打印一棵樹

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);

}

}

}

}

在線等,計算機(jī)高手,java深度搜索樹代碼

//偽代碼。我文本框里直接寫的

void dfs(treeNodeT a)

{

iteretor itr=a.children();

while (itr.hasNext())

{

dfs((treeNode)itr.next());//遞歸調(diào)用

}

}

就是這樣了。每次迭代的查詢子節(jié)點,

如果子節(jié)點還有子節(jié)點就繼續(xù)向下找,一直找到最深。

直到?jīng)]有了就彈棧,看看上一級還有沒有其他的子節(jié)點。

有就遍歷他的第二個子節(jié)點,沒有就彈。

這樣的話就是深度優(yōu)先搜索了。

java中如何建立一個java樹,請詳解?

import?java.awt.*;

import?javax.swing.*;

class?TreeDemo?extends?JFrame

{

public?TreeDemo()

{

setSize(400,300);

setTitle("演示怎樣使用JTree");

show();

JScrollPane?jPanel=new?JScrollPane();

getContentPane().add(jPanel);

JTree?jtree=new?JTree();

jPanel.getViewport().add(jtree,null);

validate();

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

}

public?class?Example5_25

{

public?static?void?main(String[]?args)

{

TreeDemo?frame=new?TreeDemo();

}

}

其中JScrollPane是一個帶滾動條的面板類。

將對象加入到帶滾動條的面板類中,在將已建的數(shù)放入到其中。

就可建立一個系統(tǒng)默認(rèn)的樹結(jié)構(gòu)。

java編打出5行圣誕樹,求教每一步詳細(xì)思想。下面是代碼

按照你的要求加詳細(xì)注釋的圣誕樹Java程序如下:(編程思想在注釋中說明)

public?class?ShengDanShu2?{

//這個程序的編程思想是利用對for循環(huán)變量i的控制達(dá)到一層循環(huán)代替雙層循環(huán)的目的

public?static?void?main(String[]?args)?{????

int???n=5;???//初始化打印圣誕樹層數(shù)變量n

int???a=0;???//初始化打印前置空格數(shù)變量a

int???b=0;???//初始化打印星號數(shù)變量b

for(int?i=1;i?=n;i++){???//打印n層圣誕樹

if(a!=(n-i)){????//如果前置空格數(shù)不等于n-i

System.out.print("?");?//打印一個空格

a++;????//前置空格數(shù)加一???

i=i-1;????//i變量減一??目的是固定住i變量不變直到a==n-i

}else?if(b!=(2*i-1)){???//如果星號數(shù)不等于2*i-1

System.out.print("*");??//打印一個星號

b++;????//星號數(shù)加一

i=i-1;???//i變量減一??目的是固定住i變量不變直到b==2*i-1

}else?if(a==(n-i)??b==(2*i-1)){//當(dāng)以上兩個條件都滿足時,換行初始化a和b為0???

System.out.println();??//打印換行?

a=0;???//對新的一行重新初始化前置空格數(shù)變量a

b=0;??//對新的一行重新初始化打印星號數(shù)變量b

//這里沒有控制for循環(huán)的i變量減一,因為這時i變量加一,開始新一行。

}???

}???

}?????

}

運行結(jié)果:

*

***

*****

*******

*********

java輸入樹的高度打印圣誕樹 我的代碼如下 但打印出來的*都不在同一行

打印 * 號的時候不要用println,用print就行了

println是打印后換行,print則是直接打印


網(wǎng)站標(biāo)題:java的樹的代碼怎么打 樹的代碼實現(xiàn)
分享地址:http://weahome.cn/article/hgddds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部