FW-binary - tree - with id and sibling connected - java version 2013年12月18日1:21
2013-12-18 14:24
495 查看
package test_kepler; public class Treeandgraph { public static int Id = 0; class Node { public Node left_child; public Node right_child; public String data; public Boolean isvisted; int layerNum; public Node neibor; public int parentId; public int thisid; public Node() { left_child = null; right_child = null; data = null; isvisted = false; neibor = null; layerNum = 0; thisid = ++Id; } public int getId() { return thisid; } public void setLeftChild(Node lftcd) { this.left_child = lftcd; lftcd.parentId = this.thisid; } public void setRightChild(Node rtcd) { this.right_child = rtcd; rtcd.parentId = this.thisid; } public int getParentId() { return this.parentId; } }; Node buildTree() { Node root = new Node(); root.data = "root"; root.thisid= 0; root.parentId = -1; Node t1 = new Node(); t1.data = "t1"; Node t2 = new Node(); t2.data = "t2"; Node t3 = new Node(); t3.data = "t3"; Node t4 = new Node(); t4.data = "t4"; Node t5 = new Node(); t5.data = "t5"; root.setLeftChild(t1); root.setRightChild(t2); t1.setLeftChild(t3); t1.setRightChild(t4); t2.setLeftChild(t5); return root; } //head - right - left; static void traverse_pre_order(Node nd) { if(nd != null) { System.out.print(nd.data+" ->> "); traverse_pre_order(nd.right_child); traverse_pre_order(nd.left_child); } } static void DFS(Node nd) { nd.isvisted = true; System.out.print(nd.data+" ->> "); if(nd!=null) { if(nd.left_child!=null && nd.left_child.isvisted == false) { DFS(nd.left_child); } if(nd.right_child!=null && nd.right_child.isvisted == false) { DFS(nd.right_child); } } } public static void BFS(Node root) { qbytwostc testq = new qbytwostc<Node>(); testq.enQueue(root); while(!testq.isEmpty()) { Node getout = (Node) testq.dequeue(); if(getout.isvisted == false) { getout.isvisted = true; System.out.print(getout.data+" ->> "); if(getout.right_child!=null) { testq.enQueue(getout.right_child); } if(getout.left_child!=null) { testq.enQueue(getout.left_child); } } } } /// public static void BFS_layer(Node root) { root.layerNum = 0; qbytwostc testq = new qbytwostc<Node>(); testq.enQueue(root); while(!testq.isEmpty()) { Node getout = (Node) testq.dequeue(); if(!testq.isEmpty()) { Node nextto = (Node)testq.getTop();//get the just at the head of the queue;//dequeue then enqueue int i_num = nextto.layerNum;// get the layer id if(getout.layerNum == i_num && getout.getParentId() == nextto.getParentId()) {// if the node has come out and the node in the head of the queue has the same parent then connect getout.neibor = nextto; } } int parentId = getout.layerNum; if(getout.isvisted == false) { getout.isvisted = true; if(getout.neibor!=null) { System.out.println(getout.data+" ->> layer num is = "+getout.layerNum+" neibor is "+getout.neibor.data+" ; "); } if(getout.left_child!=null) { getout.left_child.layerNum = parentId+1;//give the layer id to the children; testq.enQueue(getout.left_child); } if(getout.right_child!=null) { getout.right_child.layerNum = parentId+1;//give the layer id to the children; testq.enQueue(getout.right_child); } } } } /// public static void main(String[] args) { // TODO Auto-generated method stub Treeandgraph tg = new Treeandgraph(); Node root = tg.buildTree(); traverse_pre_order(root); System.out.println("this is the DFS"); BFS_layer(root); } }
相关文章推荐
- FWNX- build a binary search tree using array - java version <<recursive>>
- [JAVA]LeetCode105 Construct Binary Tree from Preorder and Inorder Traversal
- Binary Search Tree--find Lowest Common Ancestor--C++ and Java
- [LeetCode][Java] Construct Binary Tree from Preorder and Inorder Traversal
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal (Java)
- Leetcode oj java Construct Binary Tree from Inorder and Postorder Traversal
- [leetcode-105]Construct Binary Tree from Preorder and Inorder Traversal(java)
- PAT Advanced Level 1043. Is It a Binary Search Tree (25)(Java and C++)
- Java for LeetCode 106 Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Preorder and Inorder Traversal Java
- construct-binary-tree-from-preorder-and-inorder-traversal Java code
- [JAVA]LeetCode106 Construct Binary Tree from Inorder and Postorder Traversal
- [LeetCode][Java] Construct Binary Tree from Inorder and Postorder Traversal
- Construct Binary Tree from Inorder and Postorder Traversal Java
- Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度 [java]
- Leetcode_maximum-depth-of-binary-tree (updated c++ and python version)
- leetCode:Binary Tree Postorder Traversal,Binary Tree Preorder Traversal--JAVA version
- [leetcode]105. Construct Binary Tree from Preorder and Inorder Traversal@Java解题报告
- FW - floor and ceilingn - java version
- [leetcode-297]Serialize and Deserialize Binary Tree(java)