java实现K叉树及递归和非递归遍历算法

来源:互联网 发布:硅胶点胶机编程视频 编辑:程序博客网 时间:2024/05/25 18:12


如下代码


import java.util.Stack;/** *  * @author Administrator * */class treenode {private int data;private treenode[] kNode;public treenode(int data) {super();this.data = data;}/** * @return the date */public int getData() {return data;}/** * @param date *            the date to set */public void setData(int data) {this.data = data;}/** * @return the kNode */public treenode[] getkNode() {return kNode;}/** * @param kNode *            the kNode to set */public void setkNode(treenode[] kNode) {this.kNode = kNode;}}public class k_tree {public static void main(String[] args) {// TODO Auto-generated method stubtreenode a = new treenode(1);treenode b = new treenode(2);treenode c = new treenode(3);treenode d = new treenode(4);treenode e = new treenode(5);treenode f = new treenode(6);treenode[] aNode = { b, c, d };treenode[] bNode = { e, f };a.setkNode(aNode);b.setkNode(bNode);System.out.println("递归遍历:");displayTree(a);System.out.println("非递归遍历:");displayTreeByStack(a);}// 递归遍历;static void displayTree(treenode root) {if (root == null)System.out.println("空树");else {if (root.getkNode() != null) {// 有子节点继续递归;for (treenode tn : root.getkNode())displayTree(tn);}System.out.println(root.getData());// 打印节点值;}}// 非递归遍历利用栈模拟;@SuppressWarnings({ "unchecked", "rawtypes" })static void displayTreeByStack(treenode root) {if (root == null)System.out.println("空树");else {Stack allNode = new Stack();// 临时存储用栈allNode.push(root);// 压入根节点while (!allNode.isEmpty()) {// 只有栈不为空treenode n = (treenode) allNode.pop();// 弹出元素System.out.println(n.getData());if (n.getkNode() != null) {// 再遍历压入子树for (treenode tn : n.getkNode())allNode.push(tn);}}}}}


阅读全文
0 0
原创粉丝点击