1. 程式人生 > >【LeetCode從零單刷】Same Tree

【LeetCode從零單刷】Same Tree

沒錯我就是伍聲2009的粉絲,從今天起,模仿《從零單排》系列,菜雞單刷LeetCode!

題目:

Given two binary trees, write a function to check if they are equal or not.  Two binary trees are considered equal if they are structurally identical and the nodes have the same value.

解答:

驗證兩棵樹是否相等。使用遞迴的思想,如果樹節點的val相等,則去各自計運算元樹是否是相等的樹。

注意遞迴終點:輸入的兩棵樹全部都是空樹

時,輸出 true. 所以我得到了這個:

/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSameTree(TreeNode *p, TreeNode *q) {
        if(p == NULL && q == NULL)
            return true;
        else if(p->val == q->val)
            return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right));
        else 
            return false;
    }
};
好吧沒有通過……當輸入空樹,與一棵非空樹比較時,空樹根本無法取到 val 值。所以要將輸入空樹的情況首先(如果放到以後的分支中,還是會遇到空樹求值的情況)全部排除。得到:
/**
 * Definition for binary tree
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
 * };
 */
class Solution {
public:
    bool isSameTree(TreeNode *p, TreeNode *q) {
        if(p == NULL && q == NULL)
            return true;
        else if((p==NULL && q!=NULL) || (q==NULL && p!=NULL) || (p->val != q->val))
            return false;   
        else if(p->val == q->val)
            return (isSameTree(p->left, q->left) && isSameTree(p->right, q->right));
    }
};

相關推薦

LeetCodeSame Tree

沒錯我就是伍聲2009的粉絲,從今天起,模仿《從零單排》系列,菜雞單刷LeetCode! 題目: Given two binary trees, write a function to check if they are equal or not.  Two binary

LeetCodeFind the Duplicate Number

題目: Given an array nums containing n + 1 integers where each integer is between 1 and n (inclusive)

LeetCode單排No.135Candy(雙向動態規劃)

int ldr padding order min sim color assigned ini 1.題目There are N children standing in a line. Each child is assigned a rating value.You

[Leetcode]771. Jewels and Stones

Jewels and Stones 題目 You’re given strings J representing the types of stones that are jewels, and S representing the stones

學習openCVIOS7下的openCV開發起步(Xcode5.1.1&openCV2.49)

rgb load fcm 12px 轉換 sim 圖像 round ios 前言: 開發IOS7已經有一月的時間了。近期在準備推研的事,有點想往CV方向發展。於是開始自學openCV。 關註CSDN已經非常久了。也從非常多博主那學到了非常多知識,於是我也從這周開

Kettle開始第八彈之Kettle變數引數傳遞介紹

對於ETL引數傳遞是一個很重要的環節,因為引數的傳遞會涉及到業務資料是如何抽取。下面我為大家舉例一個簡單的需求。 需求說明:需要抽取昨天的資料裝載到目標表中。   1、  引數作用域? 答:Kettle中引數大致可分為兩類

leetcodesame-tree

Given two binary trees, write a function to check if they are equal or not. Two binary trees are considered equal if they are structurally identic

Kettle開始第四彈之Kettle轉換資料抽取使用

Kettle版本:3.2GA JDK版本:1.6.0_41 OS:NT 需求:需要把業務系統庫、TXT檔案、EXCEL檔案中的資料抽取到資料倉庫中。 1、  建立轉換(Ctrl+N),轉換名稱為:R

Kettle開始第十彈之Kettle執行日誌介紹

關於Kettle日誌是很重要的一部分,因為不管是任何資訊都只能通過日誌的方式來查詢自己所關心的資訊。 日誌儲存有兩種方式:一種是文字檔案儲存日誌,另一種是資源庫儲存日誌(注:Kettle資源庫日誌分兩

Kettle開始第六彈之Kettle作業流程使用

Kettle版本:3.2GA JDK版本:1.6.0_41 OS:NT 需求:把每天ETL執行的錯誤情況以Email形式傳送到指定郵箱。 1、建立轉換(Ctrl+N),本例項則使用【第四彈Kettle

Kettle開始第五彈之Kettle轉換中常用元件介紹

Kettle版本:3.2GA JDK版本:1.6.0_41 OS:NT 由於元件涉及非常多,我這就只舉例幾個常用的元件來進行介紹。需要了解全部元件下載 本彈給大家詳細說明的元件:表輸入、獲取系統資訊

Informatica開始第一彈之Informatica在linux下安裝搭建

安裝介質清單準備 介質名稱 版本資訊 描述 Informatica Powercenter 9.5.1 for Linux 64 bit 必須 Java Jdk 1.6.

Informatica開始Informatica正在準備說明!

說明: 由於本人個人覺得Informatica在NT、Server環境中安裝太過於簡單,給大家講解也沒什麼意思,所以正在準備Linux下安裝Informatica給大家詳細講解。 大家需要熟悉Liunx一些常用的命令比如:useradd、groupadd、chmod、c

學習PythonUbuntu14.10下Python開發環境配置

1. 前言 最近在研究計算機視覺的一些演算法,也剛開始接觸linux,試著在ubuntu下用qt+openCV進行開發,感覺還行,但是Python作為在學術領域廣為應用的高階解釋性語言,其在計算機視覺的領域也應用得非常廣泛,於是我就買了一本《python計算機視覺》的書,打

Linux開始:0.初識Linux

從上週末開始下了決心打算學習Linux。之前也為學習尋找了很多資料,昨天,網上買的《鳥哥的Linux私房菜》到了,今天遂開始我的 Linux征程。正好有部落格園這個平臺,正好現在也是懶得記什麼筆記,那就把學習的歷程和知識在此做一個詳細的記錄,方便自己之後溫故知新。因為懶得

Kettle開始第二彈之Kettle資料夾與介面介紹

1、  下載Kettle3.2GA工具壓縮檔案。 2、  下載1.5或者以上JDK。 注:安裝完成JDK後需要配置JAVA_HOME與PATH環境變數,如果不配置則需要在Kettle家族相關的指令

Centos7開始Centos 下硬碟分割槽的最佳方案

在對硬碟進行分割槽前,應該先弄清楚計算機擔負的工作及硬碟的容量有多大,還要考慮到以下幾個問題:   第一點也是最重要的一點,要知道當前安裝LILO的版本,因為LILO2.21及早期版本對硬碟大小有限制,如果安裝LILO到1023磁軌以外即8G的空間以外,LILO就無法啟動。

學java猜數字遊戲——了解類與對象

ring == src layer stat 猜數字 false mat think 通過猜數字遊戲,開始了解類和對象。 遊戲概要:產生一個0-9間的隨機數,3個player猜,若有猜中者則遊戲結束,猜不中下一輪繼續猜。 類:GuessGame.class、Player.c

學習openCV使用直方圖統計畫素

1. 計算影象直方圖 影象是由畫素組成的,在一個單通道的灰度影象中,每個畫素的值介於0到255之間,而直方圖就是一個簡單的表,給出了一幅或者一組影象中擁有給定數值的畫素數量。當然直方圖也可以歸一化,歸一化後的所有項的和為1,在這種情況下,每一項給出的都是擁有特定數值的畫素在

學習openCVopecv操作畫素

//at方法 void colorReduce1(Mat&image, int div = 64) { int nl = image.rows; //影象的行數 //影象每行的畫素數 int nc = image.cols * image.channels(); for