File tree 5 files changed +103
-0
lines changed
algorithms/BinaryTreePreorderTraversal
5 files changed +103
-0
lines changed Original file line number Diff line number Diff line change @@ -41,6 +41,7 @@ All solutions will be accepted!
41
41
| 9| [ Palindrome Number] ( https://leetcode-cn.com/problems/palindrome-number/description/ ) | [ java/py/js] ( ./algorithms/PalindromeNumber ) | Easy|
42
42
| 389| [ Find The Difference] ( https://leetcode-cn.com/problems/find-the-difference/description/ ) | [ java/py/js] ( ./algorithms/FindTheDifference ) | Easy|
43
43
| 94| [ Binary Tree Inorder Traversal] ( https://leetcode-cn.com/problems/binary-tree-inorder-traversal/description/ ) | [ java/py/js] ( ./algorithms/BinaryTreeInorderTraversal ) | Medium|
44
+ | 144| [ Binary Tree Preorder Traversal] ( https://leetcode-cn.com/problems/binary-tree-preorder-traversal/description/ ) | [ java/py/js] ( ./algorithms/BinaryTreePreorderTraversal ) | Medium|
44
45
45
46
# Database
46
47
| #| Title| Solution| Difficulty|
Original file line number Diff line number Diff line change
1
+ # Binary Tree Preorder Traversal
2
+ Use recursion can easy to solve this problem, like below:
3
+ ```
4
+ # Definition for a binary tree node.
5
+ # class TreeNode(object):
6
+ # def __init__(self, x):
7
+ # self.val = x
8
+ # self.left = None
9
+ # self.right = None
10
+
11
+ class Solution(object):
12
+ def preorderTraversal(self, root):
13
+ """
14
+ :type root: TreeNode
15
+ :rtype: List[int]
16
+ """
17
+ # root -> left -> right
18
+ if not root:
19
+ return []
20
+ return [ root.val ] + self.preorderTraversal(root.left) + self.preorderTraversal(root.right)
21
+ ```
22
+ But we have to use iteration to solve this problem, the stack is the solution
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * public class TreeNode {
4
+ * int val;
5
+ * TreeNode left;
6
+ * TreeNode right;
7
+ * TreeNode(int x) { val = x; }
8
+ * }
9
+ */
10
+ class Solution {
11
+ public List <Integer > preorderTraversal (TreeNode root ) {
12
+ List <TreeNode > stack = new ArrayList <TreeNode >();
13
+ List <Integer > res = new ArrayList <Integer >();
14
+ if (root == null ) {
15
+ return res ;
16
+ }
17
+
18
+ stack .add (root );
19
+ while (stack .size () > 0 ) {
20
+ TreeNode node = stack .get (stack .size () - 1 );
21
+ stack .remove (stack .size () - 1 );
22
+ res .add (node .val );
23
+ if (node .right != null ) stack .add (node .right );
24
+ if (node .left != null ) stack .add (node .left );
25
+ }
26
+ return res ;
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ /**
2
+ * Definition for a binary tree node.
3
+ * function TreeNode(val) {
4
+ * this.val = val;
5
+ * this.left = this.right = null;
6
+ * }
7
+ */
8
+ /**
9
+ * @param {TreeNode } root
10
+ * @return {number[] }
11
+ */
12
+ var preorderTraversal = function ( root ) {
13
+ if ( root === null ) {
14
+ return [ ]
15
+ }
16
+ let stack = [ root ] ,
17
+ res = [ ]
18
+ while ( stack . length > 0 ) {
19
+ let node = stack . pop ( )
20
+ res . push ( node . val )
21
+ if ( node . right ) stack . push ( node . right )
22
+ if ( node . left ) stack . push ( node . left )
23
+ }
24
+ return res
25
+ } ;
Original file line number Diff line number Diff line change
1
+ # Definition for a binary tree node.
2
+ # class TreeNode(object):
3
+ # def __init__(self, x):
4
+ # self.val = x
5
+ # self.left = None
6
+ # self.right = None
7
+
8
+ class Solution (object ):
9
+ def preorderTraversal (self , root ):
10
+ """
11
+ :type root: TreeNode
12
+ :rtype: List[int]
13
+ """
14
+ # root -> left -> right
15
+ if not root :
16
+ return []
17
+ stack = [root ]
18
+ res = []
19
+ while len (stack ) > 0 :
20
+ node = stack .pop ()
21
+ res .append (node .val )
22
+ if node .right :
23
+ stack .append (node .right )
24
+ if node .left :
25
+ stack .append (node .left )
26
+ return res
27
+
You can’t perform that action at this time.
0 commit comments