965. 单值二叉树(深搜/广搜)

 1 /**
 2  * Definition for a binary tree node.
 3  * public class TreeNode {
 4  *     int val;
 5  *     TreeNode left;
 6  *     TreeNode right;
 7  *     TreeNode(int x) { val = x; }
 8  * }
 9  */
10 class Solution {
11     private int val;
12     private boolean flag=true;
13     public boolean isUnivalTree(TreeNode root) {
14         if(root==null) return true;
15         val=root.val;
16         dfs(root);
17         return flag;
18     }
19     void dfs(TreeNode root){
20         if(!flag||root==null) return; //剪枝
21         if(root.val!=val){
22             flag=false;
23             return;
24         }
25         dfs(root.left);
26         dfs(root.right);
27     }
28 }

原文地址:https://www.cnblogs.com/NiBosS/p/12032204.html

时间: 2024-08-29 21:13:23

965. 单值二叉树(深搜/广搜)的相关文章

HDU 4771 Stealing Harry Potter's Precious (深搜+广搜)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4771 题面: 欢迎参加--BestCoder周年纪念赛(高质量题目+多重奖励) Stealing Harry Potter's Precious Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2207    Accepted Submis

leetcode 深搜广搜

遍历整个grid数组,当发现有1的时候,就把和这个1连成片的1都置为0,并增加一个计数.最后返回这个计数. 广搜,但这个代码通不过测试,栈溢出. class Solution { public: void bfs(vector<vector<char>>& grid,int i,int j){ if(i<0||j<0||i>=grid.size()||j>=grid[0].size()) return; if(grid[i][j]=='0') ret

迷宫问题(深搜 广搜)

题目描述: 给出一个m*n的迷宫图和一个入口,一个出口. 编一个程序,打印一条从迷宫入口到出口的路径. -1表示走不通,0表示能走,只能上下左右走: 无路可走输出"no way": 样例输入: 8 5-1 -1 -1 -1 -1 0 0 0 0 -1-1 -1 -1 0 -1-1 0 0 0 -1-1 0 0 1 -1-1 0 0 0 -1-1 -1 -1 0 -1-1 0 0 0 -12 18 4 8 5-1 -1 -1 -1 -10 0 0 0 -1-1 -1 -1 0 -1-1

7.23 深搜广搜

深搜(DFS)  关键词:回溯 栈实现,(递归本质和栈一样)一直走到底再回溯,时间复杂度高,空间低 #include<iostream> #include<cstring> using namespace std; int R,C; char maps[40][40]; int dp[40][40]; int dir[2][4]={{1,0,0,-1},{0,1,-1,0}}; int ans=1<<30; void DFS(int x,int y,int step){

DFS-BFS(深搜广搜)原理及C++代码实现

深搜和广搜是图很多算法的基础,很多图的算法都是从这两个算法中启发而来. 深搜简单地说就是直接一搜到底,然后再回溯,再一搜到底,一直如此循环到没有新的结点. 广搜简单地说就是一层一层的搜,像水的波纹一样往外面扩散,扩散到最外层搜索也就完成了. prim最小生成树.Dijkstra单源最短路径算法都使用了类似广度优先搜索的思想. 拓扑排序就可以用深搜来实现,分解强连通分量也可以用深搜来实现(转置图加两次深搜) 我们实现广搜时需要用队列来辅助我们进行.实现深搜时使用栈来辅助我们进行,所以显而易见的用递

图的创建,深搜,广搜(基于临接表实现)

#include <stdio.h> #include <stdlib.h> #include <iostream> #include <queue> using namespace std; #define MaxVertexNum 100 //最大顶点数 typedef enum{DG,UDG,DN,UDN} GraphKind; //图的种类 typedef int InfoType; typedef char VertexType; typedef

深搜,广搜

//实验要求: //用邻接表存储一个无向图, //深度优先,广度优先遍历 //拓扑排序 #include<stdio.h> #include<stdlib.h> #include<string.h> typedef int status ; struct ljno //邻接表数据类型 { int x; //存储数据 ljno* next; }ss; struct ALGraph { ljno *data ; int vexnum,exnum;//顶点个数和边的个数 };

迷宫广搜

上学期学了C,这学期学C++.感觉最难的还是算法,上周作业的一道广搜题是我第一次接触广搜,由于第一学期刚学编程就接触的太多的算法难题,不禁对代码产生畏惧,不过还好没有放弃,虽然算法很难,但我慢慢找到了一点学数学时的乐趣.先介绍一下这道未来的我看过来会觉得很简单一道题吧 You are provided a maze(迷宫), and you need to program to find the least steps to walk from the start to the end.And

算法学习笔记 二叉树和图遍历—深搜 DFS 与广搜 BFS

图的深搜与广搜 马上又要秋招了,赶紧复习下基础知识.这里复习下二叉树.图的深搜与广搜.从图的遍历说起,图的遍历方法有两种:深度优先遍历(Depth First Search), 广度优先遍历(Breadth First Search),其经典应用走迷宫.N皇后.二叉树遍历等.遍历即按某种顺序访问"图"中所有的节点,顺序分为: 深度优先(优先往深处走),用的数据结构是栈, 主要是递归实现: 广度优先(优先走最近的),用的数据结构是队列,主要是迭代实现: 对于深搜,由于递归往往可以方便的利