zoukankan      html  css  js  c++  java
  • lc0309

    ✅ 872. 叶子相似的树

    https://leetcode-cn.com/problems/leaf-similar-trees/

    描述

    请考虑一颗二
    叉树上所有的叶子,这些叶子的值按从左到右的顺序排列形成一个 叶值序列 。

    Screen Shot 2020-03-09 at 09.57.49.jpg

    举个例子,如上图所示,给定一颗叶值序列为 (6, 7, 4, 9, 8) 的树。

    如果有两颗二叉树的叶值序列是相同,那么我们就认为它们是 叶相似 的。

    如果给定的两个头结点分别为 root1 和 root2 的树是叶相似的,则返回 true;否则返回 false 。

    解答

    (中序)遍历,每次碰到一个叶子,就加入队列,最后比较两个队列一样不。

    c todo watch me

    /*思路,先把两个root的叶子结点分别存在两个数组里面,然后再比较这两个数组的元素是否一致*/
    void ordertraversal(struct TreeNode* root, int* leaf, int* count)
    {
        if(root)
        {
            if(root->left == NULL && root->right == NULL)
            {
                leaf[*count] = root->val;
                (*count)++;
            }
            ordertraversal(root->left, leaf, count); //这里的count就不用&count,因为这里的count相当于指针了
            ordertraversal(root->right, leaf, count);
        } 
    }
        
      
    bool leafSimilar(struct TreeNode* root1, struct TreeNode* root2) 
    {
        int leaf1[100] = {0}, leaf2[100] = {0}, i = 0, j = 0, count1 = 0, count2 = 0;
        ordertraversal(root1, leaf1, &count1);  //这种一般都要传地址,count的地址,传值就会出错
        ordertraversal(root2, leaf2, &count2); 
        while(leaf1[i++] == leaf2[j++] && i < 100 && j < 100);
        if(i < 100) return false;
        else return true;
    }
    

    py

        tt 实际上就是递归找叶子
    
    # Definition for a binary tree node.
    # class TreeNode:
    #     def __init__(self, x):
    #         self.val = x
    #         self.left = None
    #         self.right = None
    
    class Solution:
        def leafSimilar(self, root1: TreeNode, root2: TreeNode) -> bool:
            #tt 实际上就是找叶子
            def findLeaf(node, seq):
                if node:
                    if not node.left and not node.right:
                        seq.append(node.val)
                    findLeaf(node.left, seq)
                    findLeaf(node.right, seq)
            seq1, seq2 = [], []
            findLeaf(root1, seq1)
            findLeaf(root2, seq2)
            return seq1 == seq2
            '''
    执行用时 :
    36 ms
    , 在所有 Python3 提交中击败了
    69.81%
    的用户
    内存消耗 :
    13.5 MB
    , 在所有 Python3 提交中击败了
    13.83%
    的用户
            '''
    
  • 相关阅读:
    第二次冲刺 站立会议7
    第二次冲刺 站立会议6
    第二次冲刺 站立会议5
    第二次冲刺 站立会议4
    第二次冲刺 站立会议3
    第二次冲刺 站立会议2
    第二次冲刺 站立会议1
    第一次冲刺 站立会议9
    第一次冲刺 站立会议8
    第一次冲刺 站立会议7
  • 原文地址:https://www.cnblogs.com/paulkg12/p/12449778.html
Copyright © 2011-2022 走看看