在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