1. 程式人生 > >leetcode 100. Same Tree 二叉樹DFS深度優先遍歷

leetcode 100. Same Tree 二叉樹DFS深度優先遍歷

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.

題意很簡單,就是DFS深度優先遍歷。

程式碼如下:


/* class TreeNode 
 {
      int val;
      TreeNode left;
      TreeNode right;
      TreeNode(int x) { val = x; }
}*/
public class Solution { public boolean isSameTree(TreeNode p, TreeNode q) { return isEqual(p,q); } //遞迴遍歷二叉樹 private boolean isEqual(TreeNode p, TreeNode q) { if(p==null && q==null) return true; else if(p==null && q!=null
|| p!=null && q==null ) return false; else if(p.val==q.val) return isEqual(p.left, q.left) && isEqual(p.right, q.right); else return false; } }

下面是C++的做法,就是做一個DFS深度優先遍歷的做法,很簡單的

程式碼如下:

#include<iostream>
#include <vector>

using namespace std;


/*
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 || p != NULL && q == NULL) return false; else if (p == NULL && q == NULL) return true; else if (p->val != q->val) return false; else return isSameTree(p->left,q->left) && isSameTree(p->right,q->right); } };

相關推薦

leetcode 100. Same Tree DFS深度優先

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

深度優先DFS)與廣度優先(BFS)

最近在練習劍指offer上的題,討論區看到有人提到深度優先遍歷和廣度優先遍歷,就查了一點相關知識點。 深度優先遍歷(Depth First Search,簡稱DFS)又稱深度優先搜尋,遍歷的過程是 從某個頂點出發,首先訪問這個頂點,然後找出剛訪問這個結點的第一個未被訪問的鄰結點,然後

深度優先和廣度優先

var length earch rst bre () fun 遍歷 class 1. 二叉樹的深度優先遍歷,使用棧Stack, DFS(Depth First Search) function DFS(root){ var stack = [];

python 資料結構與演算法 day05 深度優先(縱向)

1. 二叉樹深度優先遍歷三種方式   不同於樹的廣度優先遍歷(一層一層的走,同一層從左到右走完開始走下一層的橫向遍歷方式),深度優先遍歷是一條路走到黑,然後再走下一條;    先序遍歷:根節點--左子節點---右子節點(先從根節點開始,走左子樹,對這個左子樹依然按照根節點

PHP實現深度優先(前序、中序、後序)和廣度優先(層次)

前言: 深度優先遍歷:對每一個可能的分支路徑深入到不能再深入為止,而且每個結點只能訪問一次。要特別注意的是,二叉樹的深度優先遍歷比較特殊,可以細分為先序遍歷、中序遍歷、後序遍歷。具體說明如下: 前序遍歷:根節點->左子樹->右子樹 中序遍歷:左子樹->根節點->右子樹 後

python 用棧和佇列實現深度優先(三種)和廣度優先

#coding=utf-8 #自定義佇列 class pyqueue(): def __init__(self, size): self.queue = [] self.size = size self.end =

C++ | 深度優先(前序、中序、後序)_3

深度優先遍歷 /* Binary Tree Traversal - Preorder, Inorder, Postorder */ #include<iostream> using namespace std; struct Node { char data; struct

深度優先(棧)和廣度優先(佇列)

前序,中序和後序遍歷都是深度優先遍歷的特例 :所以直接先序中序後續遍歷也可以 深度優先遍歷(棧,先壓右節點,再壓左節點) 也就深入的遍歷,沿著每一個分支直到走到最後,然後才返回來遍歷剩餘的節點。二叉樹不同於圖,圖需要標記節點是否已經訪問過,因為可能會存在環,而二叉樹不會

深度優先

資料結構與演算法中利用深度優先遍歷(DFS)藉助二叉樹問題。 二叉樹結點定義: struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode

深度優先以及廣度優先實現

深度遍歷分為先序遍歷,中序遍歷,以及後序遍歷;而深度遍歷的方式又分為遞迴深度遍歷和棧深度遍歷。 廣度優先遍歷是層序遍歷: #!/usr/bin/env python #coding:utf-8 class TreeNode(object): def

深度優先與廣度優先 [ C++ 實現 ]

  /**  * <!--  * File   : binarytree.h  * Author : fancy  * Email  : [email protected]  * Date   : 2013-02-03  * --!>  */ #include <stdio.h>

深度優先(前序、中序、後序)

操作 tro traverse 結構 自己的 mode 輸出結果 結果 深度優先遍歷 二叉樹是一種非常重要的數據結構,很多其他數據機構都是基於二叉樹的基礎演變過來的。二叉樹有前、中、後三種遍歷方式,因為樹的本身就是用遞歸定義的,因此采用遞歸的方法實現三種遍歷,

leetcode【94】的中序

寫在最前面: 很常規的一道二叉樹的基本操作,最偷懶的辦法是遞迴,不需要想那麼多。 給定一個二叉樹,返回它的中序 遍歷。 示例: 輸入: [1,null,2,3] 1 \ 2 / 3 輸出: [1,3,2] 進階: 遞

LeetCode題解】94_的中序

【LeetCode題解】94_二叉樹的中序遍歷 文章目錄 【LeetCode題解】94_二叉樹的中序遍歷 描述 方法一:遞迴 Java 程式碼 Python程式碼 方法二:非遞迴

的廣度優先深度優先的遞歸和非遞歸實現方式

root 中序遍歷 queue push stack pop pac imp current 二叉樹的遍歷方式: 1、深度優先:遞歸,非遞歸實現方式   1)先序遍歷:先訪問根節點,再依次訪問左子樹和右子樹   2)中序遍歷:先訪問左子樹,再訪問根節點嗎,最後訪問右子樹

的廣度優先深度優先

本文內容參考自:https://www.cnblogs.com/xiaolovewei/p/7763867.html 1.廣度優先遍歷  英文縮寫為BFS即Breadth FirstSearch。其過程檢驗來說是對每一層節點依次訪問,訪問完一層進入下一層,而且每個節點只能訪問

的廣度優先演算法(C++)

                #include <iostream>#define _OK 1#define _ERROR 0using namespace std;// Define node element type in binary tree.typedef char Element;/

C++ | 廣度優先(層級順序)_2

層級順序遍歷二叉樹  /* Binary tree - Level Order Traversal */ #include<iostream> #include<queue> using namespace std; struct Node { char d

的廣度優先深度優先(Java實現)

對於節點的定義 class ListNode{ ListNode left; ListNode right; int val; public ListNode(int value){ this.val=

進行廣度優先

廣度 alt 這就是 idt eight bsp 隊列 廣度優先遍歷 入隊 假設一個二叉樹結構,如下 對它進行廣度優先遍歷的時候,用隊列進行操作 定義一個隊列:queue = [ ] 1、先將A從右側壓入隊列,queue = [A] 2、