872. Leaf-Similar Trees
https://leetcode.com/problems/leaf-similar-trees/discuss/152358/Simple-6-lines-Java-StringBuilder-+-traverse-with-explanation Sol 1 class Solution { // preorder , root, left, right public boolean leafSimilar(TreeNode root1, TreeNode root2) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); traverse(root1, sb1); traverse(root2, sb2); return sb1.toString().equals(sb2.toString()); } private void traverse(TreeNode node, StringBuilder sb){ // base case if(node == null) return; if(node.left == null && node.right == null) sb.append(node.val + ","); traverse(node.left, sb); traverse(node.right, sb); } } class Solution { // inorder , left,root, right public boolean leafSimilar(TreeNode root1, TreeNode root2) { StringBuilder sb1 = new StringBuilder(); StringBuilder sb2 = new StringBuilder(); traverse(root1, sb1); traverse(root2, sb2); return sb1.toString().equals(sb2.toString()); } private void traverse(TreeNode node, StringBuilder sb){ // base case if(node == null) return; traverse(node.left, sb); if(node.left == null && node.right == null) sb.append(node.val + ","); traverse(node.right, sb); } } Sol 2 O(logN) Space https://leetcode.com/problems/leaf-similar-trees/discuss/152329/C++JavaPython-O(logN)-Space public boolean leafSimilar(TreeNode root1, TreeNode root2) { Stack<TreeNode> s1 = new Stack<>(), s2 = new Stack<>(); s1.push(root1); s2.push(root2); while (!s1.empty() && !s2.empty()) if (dfs(s1) != dfs(s2)) return false; return s1.empty() && s2.empty(); } public int dfs(Stack<TreeNode> s) { while (true) { TreeNode node = s.pop(); if (node.right != null) s.push(node.right); if (node.left != null) s.push(node.left); if (node.left == null && node.right == null) return node.val; } }
Consider all the leaves of a binary tree. From left to right order, the values of those leaves form a leaf value sequence.

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
1and100nodes.
posted on 2018-11-08 16:16 猪猪🐷 阅读(105) 评论(0) 收藏 举报
浙公网安备 33010602011771号