LeetCode 872. Leaf-Similar Trees

原题链接在这里:https://leetcode.com/problems/leaf-similar-trees/

题目:

Consider all the leaves of a binary tree.  From left to right order, the values of those leaves form a leaf value sequence.

LeetCode 872. Leaf-Similar Trees_第1张图片

For example, in the given tree above, the leaf value sequence is (6, 7, 4, 9, 8).

Two binary trees are considered leaf-similar if their leaf value sequence is the same.

Return true if and only if the two given trees with head nodes root1 and root2 are leaf-similar.

Note:

  • Both of the given trees will have between 1 and 100 nodes.

题解:

Use pre-order to get leaf one by one and compare the value.

Time Complexity: O(n). n is tree size.

Space: O(h). h is tree height.

AC Java:

 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 boolean leafSimilar(TreeNode root1, TreeNode root2) {
12         if(root1 == null || root2 == null){
13             return root1 == root2;
14         }
15         
16         Stack stk1 = new Stack<>();
17         Stack stk2 = new Stack<>();
18         stk1.push(root1);
19         stk2.push(root2);
20         while(!stk1.isEmpty() && !stk2.isEmpty()){
21             int leaf1 = getLeafVal(stk1);
22             int leaf2 = getLeafVal(stk2);
23             if(leaf1 != leaf2){
24                 return false;
25             }
26         }
27         
28         return stk1.isEmpty() && stk2.isEmpty();
29     }
30     
31     private int getLeafVal(Stack stk){
32         while(!stk.isEmpty()){
33             TreeNode cur = stk.pop();
34             if(cur.right != null){
35                 stk.push(cur.right);
36             }
37             
38             if(cur.left != null){
39                 stk.push(cur.left);
40             }
41             
42             if(cur.left == null && cur.right == null){
43                 return cur.val;
44             }
45         }
46         
47         return -1;
48     }
49 }

 

你可能感兴趣的:(LeetCode 872. Leaf-Similar Trees)