日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java二叉树代码_JAVA语言实现二叉树生成的代码教程

發(fā)布時間:2023/12/1 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java二叉树代码_JAVA语言实现二叉树生成的代码教程 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文主要向大家介紹了JAVA語言實現(xiàn)二叉樹生成的代碼教程,通過具體的內(nèi)容向大家展示,希望對大家學習JAVA語言有所幫助。

給定某二叉樹三序遍歷中的兩個,我們即可以通過生成該二叉樹,并遍歷的方法,求出剩下的一序,具體代碼如下

package?Tree;

import?java.io.BufferedInputStream;

import?java.util.*;

public?class?BT?{

class?Node{

Node?l;//左兒子

Node?r;//右兒子

char?c;//結(jié)點字符

public?Node(char?c)?{

this.c?=?c;

this.l?=?null;

this.r?=?null;

}

}

Node?root;

char[]?str1,str2;

public?BT()?{

root?=?null;

}

public?void?postOrder(Node?n)?{

if(n.l!=null)?{

postOrder(n.l);

}

if(n.r!=null)?{

postOrder(n.r);

}

System.out.print(n.c);

}

public?void?firstOrder()?{

this.firstOrder(this.root);

}

public?void?firstOrder(Node?n)?{

System.out.print(n.c);

if(n.l!=null)?{

firstOrder(n.l);

}

if(n.r!=null)?{

firstOrder(n.r);

}

}

public?void?postOrder()?{

this.postOrder(this.root);

}

public?Node?build(int?s1,int?e1,int?s2,int?e2)?{

char?c?=?str1[s1];

Node?Root?=?new?Node(c);

int?index?=?0;

for(int?i?=?s2;i<=e2;i++)?{

if(str2[i]==c)?{

index?=?i;

break;

}

}

if(index!=s2)?{//如果左子樹不為空

Root.l?=?build(s1+1,s1+index-s2,s2,index-1);

}

if(index!=e2)?{//如果右子樹不為空

Root.r?=?build(s1+index-s2+1,e1,index+1,e2);

}

return?Root;

}

public?Node?build1(int?s1,int?e1,int?s2,int?e2)?{//中后序還原樹

char?c?=?str2[e2];

Node?Root?=?new?Node(c);

int?index?=?0;

for(int?i?=?s1;i<=e1;i++)?{

if(str1[i]==c)?{

index?=?i;

break;

}

}

if(index!=s1)?{

Root.l?=?build1(s1,index-1,s2,s2+index-s1-1);

}

if(index!=e1)?{

Root.r?=?build1(index+1,e1,s2+index-s1+1,e2-1);

}

return?Root;

}

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

String?s1,s2?=?null;

Scanner?sc?=?new?Scanner(new?BufferedInputStream(System.in));

BT?bt?=?new?BT();

while(sc.hasNext())?{

s1?=?sc.next();

s2?=?sc.next();

bt.str1?=?new?char[s1.length()];

bt.str2?=?new?char[s1.length()];

bt.str1?=?s1.toCharArray();

bt.str2?=?s2.toCharArray();

bt.root?=?bt.build1(0,?s1.length()-1,?0,?s1.length()-1);

bt.firstOrder();

}

}

}

其中build是已知前中序,生成二叉樹;build1是已知中后序,生成二叉樹.

本文由職坐標整理并發(fā)布,希望對同學們有所幫助。了解更多詳情請關(guān)注編程語言JAVA頻道!

總結(jié)

以上是生活随笔為你收集整理的java二叉树代码_JAVA语言实现二叉树生成的代码教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。