您的位置:首页 > 理论基础 > 数据结构算法

数据结构-树前序遍历、中序遍历、后序遍历的递归与非递归方法java

2020-03-06 20:00 239 查看
package test;import java.util.Stack;class Node {int val;Node left = null;Node right = null;Node(int val) {this.val = val;}}public class Tree {// 1.深度优先 2.广度优先// 深度优先:1.先序2.中序3.后序// 1.递归先序public void preRootTraversalR(Node root) {if (root == null) {return;}System.out.println(root.val);preRootTraversalR(root.left);preRootTraversalR(root.right);}// 2.非递归先序public void preRootTraversal(Node root) {if (root == null) {return;}Stack stack = new Stack<>();Node temp = root;while (temp != null || !stack.empty()) {while (temp != null) {System.out.println(temp.val);stack.add(temp);temp = temp.left;}temp = stack.pop().right;}}// 3.非递归中序public void mid(Node root) {if (root == null) {return;}Stack stack = new Stack<>();Node temp = root;while (temp != null || !stack.empty()) {while (temp != null) {stack.push(temp);temp = temp.left;}Node peek = stack.pop();System.out.println(peek.val);temp = peek.right;}}// 4.非递归后序---------------public void after(Node root) {if (root == null) {return;}Stack stack = new Stack<>();Node temp = root;while (temp != null || !stack.empty()) {while (temp != null) {stack.push(temp);// stack.push(temp.right);temp = temp.left;}Node peek = stack.peek();temp = peek.right;// 判断右边有没有,有的话继续下一次循环,没有的话,就输出if (peek.right == null) {System.out.println(peek.val);peek = stack.pop();// 判断此时的输出的节点是否等于栈顶右边的节点,是的话就输出,说明是右边的节点,不是的话说明是左边的节点while (!stack.empty() && peek == stack.peek().right) {peek = stack.pop();System.out.println(peek.val);}}}}public static void main(String[] args) {//      1//     2  3//    4 5 6 7//       8Node node1 = new Node(1);Node node2 = new Node(2);Node node3 = new Node(3);Node node4 = new Node(4);Node node5 = new Node(5);Node node6 = new Node(6);Node node7 = new Node(7);Node node8 = new Node(8);node1.left = node2;node1.right = node3;node2.left = node4;node2.right = node5;node3.left = node6;node3.right = node7;node6.right = node8;Tree tree = new Tree();tree.after(node1);}}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
y159_4发布了3 篇原创文章 · 获赞 0 · 访问量 23私信关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐