Advertisement
sweet1cris

Untitled

Jan 9th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.97 KB | None | 0 0
  1. Version 0: Non-Recursion (Recommend)
  2. /**
  3.  * Definition for binary tree
  4.  * public class TreeNode {
  5.  *     int val;
  6.  *     TreeNode left;
  7.  *     TreeNode right;
  8.  *     TreeNode(int x) { val = x; }
  9.  * }
  10.  */
  11. public class Solution {
  12.     public List<Integer> preorderTraversal(TreeNode root) {
  13.         Stack<TreeNode> stack = new Stack<TreeNode>();
  14.         List<Integer> preorder = new ArrayList<Integer>();
  15.        
  16.         if (root == null) {
  17.             return preorder;
  18.         }
  19.        
  20.         stack.push(root);
  21.         while (!stack.empty()) {
  22.             TreeNode node = stack.pop();
  23.             preorder.add(node.val);
  24.             if (node.right != null) {
  25.                 stack.push(node.right);
  26.             }
  27.             if (node.left != null) {
  28.                 stack.push(node.left);
  29.             }
  30.         }
  31.        
  32.         return preorder;
  33.     }
  34. }
  35.  
  36. //Version 1: Traverse
  37. public class Solution {
  38.     public ArrayList<Integer> preorderTraversal(TreeNode root) {
  39.         ArrayList<Integer> result = new ArrayList<Integer>();
  40.         traverse(root, result);
  41.         return result;
  42.     }
  43.     // 把root为跟的preorder加入result里面
  44.     private void traverse(TreeNode root, ArrayList<Integer> result) {
  45.         if (root == null) {
  46.             return;
  47.         }
  48.  
  49.         result.add(root.val);
  50.         traverse(root.left, result);
  51.         traverse(root.right, result);
  52.     }
  53. }
  54.  
  55. //Version 2: Divide & Conquer
  56. public class Solution {
  57.     public ArrayList<Integer> preorderTraversal(TreeNode root) {
  58.         ArrayList<Integer> result = new ArrayList<Integer>();
  59.         // null or leaf
  60.         if (root == null) {
  61.             return result;
  62.         }
  63.  
  64.         // Divide
  65.         ArrayList<Integer> left = preorderTraversal(root.left);
  66.         ArrayList<Integer> right = preorderTraversal(root.right);
  67.  
  68.         // Conquer
  69.         result.add(root.val);
  70.         result.addAll(left);
  71.         result.addAll(right);
  72.         return result;
  73.     }
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement