1. 前序中序后序遍历
2. 前序中序后序遍历代码
class Solution { public List < Integer> preorderTraversal ( TreeNode root) { List < Integer> result = new ArrayList < > ( ) ; if ( root == null ) { return result; } Stack< TreeNode> stack = new Stack < > ( ) ; stack. push ( root) ; while ( ! stack. isEmpty ( ) ) { TreeNode node = stack. pop ( ) ; result. add ( node. val) ; if ( node. right != null ) { stack. push ( node. right) ; } if ( node. left != null ) { stack. push ( node. left) ; } } return result; }
}
class Solution { public List < Integer> inorderTraversal ( TreeNode root) { List < Integer> result = new ArrayList < > ( ) ; if ( root == null ) { return result; } Stack< TreeNode> stack = new Stack < > ( ) ; TreeNode cur = root; while ( cur != null || ! stack. isEmpty ( ) ) { if ( cur != null ) { stack. push ( cur) ; cur = cur. left; } else { cur = stack. pop ( ) ; result. add ( cur. val) ; cur = cur. right; } } return result; }
}
class Solution { public List < Integer> postorderTraversal ( TreeNode root) { List < Integer> result = new ArrayList < > ( ) ; if ( root == null ) { return result; } Stack< TreeNode> stack = new Stack < > ( ) ; stack. push ( root) ; while ( ! stack. isEmpty ( ) ) { TreeNode node = stack. pop ( ) ; result. add ( node. val) ; if ( node. left != null ) { stack. push ( node. left) ; } if ( node. right != null ) { stack. push ( node. right) ; } } Collections. reverse ( result) ; return result; }
}