2025-01-19 二叉树的遍历
This commit is contained in:
parent
93d01b9c42
commit
deffe97124
120
src/dataANDcalc/java/tree/TreeIterator.java
Normal file
120
src/dataANDcalc/java/tree/TreeIterator.java
Normal file
@ -0,0 +1,120 @@
|
||||
package tree;
|
||||
|
||||
public class TreeIterator {
|
||||
|
||||
private TreeNode root;
|
||||
|
||||
private void transTree(int[] arr){
|
||||
for (int i = 0; i < arr.length; i++) {
|
||||
TreeNode treeNode = new TreeNode(arr[i]);
|
||||
addNode(root, treeNode);
|
||||
}
|
||||
}
|
||||
|
||||
private void addNode(TreeNode tempNode, TreeNode treeNode){
|
||||
if(root == null){
|
||||
root = treeNode;
|
||||
return;
|
||||
}
|
||||
|
||||
if(treeNode.node<tempNode.node){
|
||||
if (tempNode.left == null){
|
||||
tempNode.left = treeNode;
|
||||
} else {
|
||||
addNode(tempNode.left, treeNode);
|
||||
}
|
||||
}
|
||||
|
||||
if(treeNode.node>tempNode.node){
|
||||
if (tempNode.right == null){
|
||||
tempNode.right = treeNode;
|
||||
} else {
|
||||
addNode(tempNode.right, treeNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void forwardIterator(TreeNode treeNode){
|
||||
if(treeNode == null){
|
||||
System.out.println("当前节点为空");
|
||||
return;
|
||||
}
|
||||
|
||||
System.out.println(treeNode.toString());
|
||||
|
||||
if (treeNode.left != null){
|
||||
forwardIterator(treeNode.left);
|
||||
}
|
||||
|
||||
if (treeNode.right!= null){
|
||||
forwardIterator(treeNode.right);
|
||||
}
|
||||
}
|
||||
|
||||
private void middleIterator(TreeNode treeNode){
|
||||
if(treeNode == null){
|
||||
System.out.println("当前节点为空");
|
||||
return;
|
||||
}
|
||||
|
||||
if (treeNode.left!= null){
|
||||
middleIterator(treeNode.left);
|
||||
}
|
||||
|
||||
System.out.println(treeNode.toString());
|
||||
|
||||
if (treeNode.right!= null){
|
||||
middleIterator(treeNode.right);
|
||||
}
|
||||
}
|
||||
|
||||
private void behindIteratro(TreeNode treeNode){
|
||||
if(treeNode == null){
|
||||
System.out.println("当前节点为空");
|
||||
return;
|
||||
}
|
||||
|
||||
if (treeNode.left!= null){
|
||||
behindIteratro(treeNode.left);
|
||||
}
|
||||
|
||||
if (treeNode.right!= null){
|
||||
behindIteratro(treeNode.right);
|
||||
}
|
||||
|
||||
System.out.println(treeNode.toString());
|
||||
}
|
||||
|
||||
public static class TreeNode{
|
||||
private int node;
|
||||
|
||||
private TreeNode left;
|
||||
|
||||
private TreeNode right;
|
||||
|
||||
public TreeNode(int node) {
|
||||
this.node = node;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "TreeNode{" +
|
||||
"node=" + node +
|
||||
", left=" + (left == null ? "null" : left.node) +
|
||||
", right=" + (right == null ? "null" : right.node) +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
int[] arr = {7, 3, 10, 12, 5, 1, 9};
|
||||
TreeIterator treeIterator = new TreeIterator();
|
||||
treeIterator.transTree(arr);
|
||||
System.out.println("前序遍历:");
|
||||
treeIterator.forwardIterator(treeIterator.root);
|
||||
System.out.println("中序遍历:");
|
||||
treeIterator.middleIterator(treeIterator.root);
|
||||
System.out.println("后序遍历:");
|
||||
treeIterator.behindIteratro(treeIterator.root);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user