java手写二叉树,前序、中序、后序遍历

    科技2025-01-30  22

    java手写二叉树,前序、中序、后序遍历

    /** * Created by 码上风云 on 2020/10/7. */ class Node<T> { public Node left, right; public T data; //创建空节点 public Node() { data = null; left = null; right = null; } //创建一个二叉树结点 public Node(T x) { this.data = x; left = null; right = null; } } public class Tree<T> { public Node<T> root; public Tree(Node root) { this.root = root; } //创建一颗空二叉树 public Tree() { this.root = new Node<T>(); } //生产一颗二叉树 public Tree(T x) { this.root = new Node<T>(x); } //插入左节点 public boolean insertLeft(T x, Node<T> parent) { if (parent == null) { return false; } Node<T> p = new Node<T>(x); if (parent.left == null) { parent.left = p; } else { p.left=parent.left; parent.left=p; } return true; } public boolean insertRight(T x,Node<T> parent){ if(parent==null){ return false; } Node<T> p=new Node<T>(x); if (parent.right==null){ parent.right=p; }else { p.right=parent.right; parent.left=p; } return true; } //先序遍历 根节点→左节点→右节点 public void preOrder(Node<T> node){ if (node==null){ return; } System.out.print(node.data+" "); preOrder(node.left); preOrder(node.right); } // 中序遍历 左节点→根节点→右节点 public void midOrder(Node<T> node){ if(node==null){ return; } midOrder(node.left); System.out.print(node.data+" "); midOrder(node.right); } // 后序遍历 左节点→右节点→根节点 public void endOrder(Node<T> node){ if(node==null){return;} endOrder(node.left); endOrder(node.right); System.out.print(node.data+" "); } public static void main(String[] args) { Tree<Integer> tree=new Tree<>(2); System.out.println(tree.insertLeft(5,tree.root)); System.out.println(tree.root.left.data); tree.insertRight(3,tree.root); System.out.println(tree.root.right.data); System.out.println("\n-----------先序遍历----------"); tree.preOrder(tree.root); System.out.println("\n--------------中序遍历---------------"); tree.midOrder(tree.root); System.out.println("\n--------------中序遍历---------------"); tree.endOrder(tree.root); } }
    Processed: 0.010, SQL: 8