在java遍历树节点的五种方法

本文主要对java小程序的5种方式:遍历,遍历,遍历、广度遍历、深度遍历,遍历一级节点和如何响应单击事件。

进口java AWT *;

导入java awt事件*。。;

导入java。利用*;



进口javax.摆动。*;

进口javax.摆动。树。*;





公共课tree_03扩展JFrame {

私人defaultmutabletreenode根; / /定义的根节点。

/ main方法。

public static void main(String { } args){

类实例化。

tree_03框架=新tree_03();

frame.setvisible(真的);

}

构建方法。

公共tree_03(){

(超级);继承自父类。

settitle(节点遍历法); / /设置窗口的标题。

窗口(100100300300); / /设置绝对位置。

setdefaultcloseoperation(JFrame。exit_on_close); / /设置窗口关闭。



根=新defaultmutabletreenode(根); / /设置根节点名称。

defaultmutabletreenode注意=新defaultmutabletreenode(一); / /定义和设置的第一个子节点。

Root.add(注意); / /第一节点添加到根。

增加 / /两个子节点要注意。

NoteA.add(New DefaultMutableTreeNode(secondaa ));

NoteA.add(New DefaultMutableTreeNode(secondab ));

defaultmutabletreenode noteb =新defaultmutabletreenode(firstb ); / /定义和设置二子节点。

Root.add(noteb);



defaultmutabletreenode诺泰奇=新defaultmutabletreenode(firstc ); / /定义和设置第三个子节点。

Root.add(诺泰奇);

NoteC.add(New DefaultMutableTreeNode(secondca )); / /添加子节点的节点的诺泰奇。

defaultmutabletreenode notesecondcb =新defaultmutabletreenode(secondcb ); / /添加子节点的节点的诺泰奇。

NoteC.add(notesecondcb); / /添加notesecondcb的诺泰奇节点。

增加notesecondcb / /子节点。

NoteSecondCB.add(New DefaultMutableTreeNode(secondcba ));

NoteSecondCB.add(New DefaultMutableTreeNode(secondcbb ));

加大对诺泰奇的secondcc / /子节点。

NoteC.add(New DefaultMutableTreeNode(secondcc ));



JTree树=新的JTree(根); / /创建一个树的根节点。

GetContentPane(),添加(树、BorderLayout。中心);



对操作节点。

面板的定义。

最后JPanel面板=新JPanel();

panel.setlayout(新GridLayout(0,1)); / /面板设置网格布局。

(得到内容面板),添加(面板、BorderLayout。东); / /面板将被放置在窗口的右。



最后JButton button_01 =新JButton(根据遍历节点序); / /定义和设置的第一个按钮。

button_01.addactionlistener(新buttonactionlistener(节点遍历前序)))

panel.add(button_01); / /将被放置到面板按钮。

最后JButton button_02 =新JButton(按节点的后序遍历); / /定义和设置二按钮。

button_02.addactionlistener(新buttonactionlistener(穿越节点在后序)))

panel.add(button_02); / /将被放置到面板按钮。

最后JButton button_03 =新JButton(广度遍历节点); / /定义和设置第三个按钮。

button_03.addactionlistener(新buttonactionlistener(广度遍历节点)))

panel.add(button_03); / /将被放置到面板按钮。

最后JButton button_04 =新JButton(深度遍历节点); / /定义和设置第四个按钮。

button_04.addactionlistener(新buttonactionlistener(深度遍历节点));

panel.add(button_04); / /将被放置到面板按钮。

最后JButton button_05 =新JButton(子节点遍历); / /定义和设置第五个按钮。

button_05.addactionlistener(新buttonactionlistener(遍历子节点));

panel.add(button_05); / /将被放置到面板按钮。



}

定义按钮单击事件。

私有类buttonactionlistener实现ActionListener {

私有字符串模式;定义模式变量。

构建方法。

公共buttonactionlistener(字符串模式){

此模式=模式;

}

定义/激活方法。

public void actionPerformed(ActionEvent e){

语句节点枚举对象。

枚举<枚举;

如果(mode.equals(节点遍历序)){

/ /根据前序遍历根节点。

枚举= root.preorderenumeration();

} else if(mode.equals(穿越节点在后序)){

枚举= root.postorderenumeration();

} else if(mode.equals(广度遍历节点)){

枚举= root.breadthfirstenumeration();

} else if(mode.equals(深度遍历节点)){

枚举= root.depthfirstenumeration();

其他{ }

(枚举=根.子);遍历所有子节点的节点。

}

了解遍历遍历。

而((枚举。hasmoreelements)){ / /遍历枚举对象。

定义一个变量节点。

defaultmutabletreenode节点;

节点=(defaultmutabletreenode)(枚举。nextelement); / /节点名称节点。

根据输出/占位符的水平。

为(int l = 0;L<node.getlevel);L(+){

system.out.print();

}

System.out.println((节点。getuserobject)); / /输入节点标签。

}

System.out.println();

System.out.println();

}

}



}



运行结果:






---一

------ secondaa

------ secondab

--- firstb

--- firstc

------ secondca

------ secondcb

--------- secondcba

--------- secondcbb

------ secondcc





------ secondaa

------ secondab

---一

--- firstb

------ secondca

--------- secondcba

--------- secondcbb

------ secondcb

------ secondcc

--- firstc









---一

--- firstb

--- firstc

------ secondaa

------ secondab

------ secondca

------ secondcb

------ secondcc

--------- secondcba

--------- secondcbb





------ secondaa

------ secondab

---一

--- firstb

------ secondca

--------- secondcba

--------- secondcbb

------ secondcb

------ secondcc

--- firstc







---一

--- firstb

--- firstc