本文共 2687 字,大约阅读时间需要 8 分钟。
import java.util.Stack;class Solution { private static void doPre(ListNode root) { if (root == null) { return; } Stack stack = new Stack<>(); stack.push(root); while (! stack.isEmpty()) { ListNode top = stack.pop(); System.out.println(top); if (top.right != null) { stack.push(top.right); } if (top.left != null) { stack.push(top.left); } }// System.out.println(root);// doPre(root.left);// doPre(root.right); } private static void doBehind(ListNode root) { if (root == null) { return; } Stack stack = new Stack<>(); stack.push(root); while (! stack.isEmpty()) { ListNode top = stack.pop(); if (top.right != null) { stack.push(top.right); } if (top.left != null) { stack.push(top.left); } System.out.println(top); }// doBehind(root.left);// doBehind(root.right);// System.out.println(root); } private static void doMid(ListNode root) { if (root == null) { return; } Stack stack = new Stack<>(); while (! stack.isEmpty() || root != null) { if (root != null) { stack.push(root); root = root.left; } else { root = stack.pop(); System.out.println(root); root = root.right; } }// doMid(root.left);// System.out.println(root);// doMid(root.right); } public static void main(String[] args) { ListNode n1 = new ListNode(1); ListNode n2 = new ListNode(2); ListNode n3 = new ListNode(3); ListNode n4 = new ListNode(4); ListNode n5 = new ListNode(5); ListNode n6 = new ListNode(6); ListNode n7 = new ListNode(7); ListNode n8 = new ListNode(8);// n1.next = n2;// n2.next = n3;// n3.next = n4;// n4.next = n5;// n5.next = n6;// n6.next = n7;// n7.next = n8; n1.left = n2; n1.right = n3; n2.left = n4; n2.right = n5; n3.left = n6; n3.right = n7; n5.left = n8; doMid(n1); }}class ListNode { int val; ListNode left; ListNode right; ListNode(int x) { val = x; } @Override public String toString() { return "ListNode{" + "val=" + val + '}'; }}
转载于:https://blog.51cto.com/tianyiya/2340037