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、