国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

java創建二叉樹及遍歷

2019-11-06 06:59:22
字體:
來源:轉載
供稿:網友

已知外部提供創建樹所需要的數據。

方法1:按照從上到下從左到右依次把數據放在對應結點來創建樹。 即數組中index處的數據在樹中仍然是放在index處,而它的左右子結點分別是 2*index+1 , 2*index+2

-- BinaryTree.javapublic class BinaryTree { Node root; int size; // 結點總個數 Object[] data; // 內部類 PRivate class Node{ private Node left; private Node right; private Object data; public Node(Object data){ this.left = null; this.right = null; this.data = data; } } public BinaryTree(Object[] data){ this.data = data; size = data.length; root = createTree(0); } // 創建下標為index處的結點及其子樹,遞歸 public Node createTree(int index){ if (index >= size) return null; Node node = new Node(data[index]); node.left = createTree(2*index+1); node.right = createTree(2*index+2); return node; } // 先序遍歷 public void preShow(Node node) { if(node!=null){ System.out.print(node.data + " "); preShow(node.left); preShow(node.right); } } // 中序遍歷 public void middleShow(Node node) { if (node != null) { middleShow(node.left); System.out.print(node.data + " "); middleShow(node.right); } } // 后序遍歷 public void backShow(Node node) { if (node != null) { middleShow(node.left); middleShow(node.right); System.out.print(node.data + " "); } } public static void main(String[] args) { Object[] my = new Object[]{'1', '2', '3', '4', '0', '5', '6', '7', '8', '0', '0', '9', 'A'}; BinaryTree tree = new BinaryTree(my); tree.preShow(tree.root); System.out.println(); tree.middleShow(tree.root); }}

法2:采用先序遍歷創建二叉樹

-- BinaryTree2.javapublic class BinaryTree2 { Node root; int size; // 結點總個數 Object[] data; int index; //表示取到數組中下標為index的元素了 // 內部類 private class Node{ private Node left; private Node right; private Object data; public Node(Object data){ this.left = null; this.right = null; this.data = data; } } public BinaryTree2(Object[] data){ size = data.length; this.data = data; index = 0; root = createTree(); } // 按照先序遍歷創造樹 public Node createTree(){ if(index>=size) return null; Object o = data[index++]; Node node = new Node(o); node.left = createTree(); node.right = createTree(); return node; } // 先序遍歷 public void preShow(Node node) { if(node!=null){ System.out.print(node.data + " "); preShow(node.left); preShow(node.right); } } // 中序遍歷 public void middleShow(Node node) { if (node != null) { middleShow(node.left); System.out.print(node.data + " "); middleShow(node.right); } } // 后序遍歷 public void backShow(Node node) { if (node != null) { middleShow(node.left); middleShow(node.right); System.out.print(node.data + " "); } } public static void main(String[] args) { Object[] my = new Object[]{'1', '2', '3', '4', '0', '5', '6', '7', '8', '0', '0', '9', 'A'}; BinaryTree2 tree = new BinaryTree2(my); tree.preShow(tree.root); System.out.println(); tree.middleShow(tree.root); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 当阳市| 清远市| 航空| 武功县| 资源县| 稻城县| 金堂县| 金湖县| 进贤县| 长春市| 南开区| 库车县| 黔东| 张掖市| 镇平县| 松阳县| 密云县| 乌鲁木齐县| 合山市| 祁阳县| 邛崃市| 永川市| 汪清县| 遂溪县| 五莲县| 淅川县| 杨浦区| 鹿泉市| 砀山县| 全椒县| 本溪| 苍溪县| 南丹县| 樟树市| 巴林右旗| 延津县| 深水埗区| 长沙县| 明溪县| 通化市| 威信县|