c++实现判断相同树的功能

  介绍

本篇内容主要讲解“C + +实现判断相同树的功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C + +实现判断相同树的功能”吧!

判断相同树

给定两个二叉树,编写一个函数来检查是否他们是相同的。

两个二叉树被认为是相同的,如果他们在结构上是相同的,节点有相同的价值。

示例1:

输入:,,,,1,,,,,,,,1
,,,,//,,,,,,/\
2,,3,,,,2,,3

,,,,,,,(1、2、3),,,(1、2、3)

输出:真正的

示例2:

输入:,,,,1,,,,,,,,1
/,,,,,,,,,,\
2,,,,,,,,,,,,2

[1、2],,,,,(1,null, 2)

输出:假

示例3:

输入:,,,,1,,,,,,,,1
//,,,,,,/\
2,,1,,,,1,,2

(1、2、1),,,[1,2]

输出:假

判断两棵树是否相同和之前的判断两棵树是否对称都是一样的原理,利用深度优先搜索DFS来递归。代码如下:

解法一:

class  Solution  {   公众:   ,,,bool  isSameTree (TreeNode  * p, TreeNode  * q), {   ,,,,,,,if  (! p ,,, !问),return 真实;   ,,,,,,,if  ((p ,,, !问),| |,(! p ,,, q, | |, (p→val  !=,问→val)), return 假;   ,,,,,,,return  isSameTree (p→左,,问→左),,,,isSameTree (p→对吧,,q→右);   ,,,}   };

这道题还有非递归的解法,因为二叉树的四种遍历(层序,先序,中序,后序)均有各自的迭代和递归的写法,这里我们先来看先序的迭代写法,相当于同时遍历两个数,然后每个节点都进行比较,可参见之间那道二叉树前序遍历,参见代码如下:

解法二:

class  Solution  {   公众:   ,,,bool  isSameTree (TreeNode *, p, TreeNode *, q), {   ,,,,,,,stack

也可以使用中序遍历的迭代写法,对应之前那道,二叉树进行遍历,参见代码如下:

解法三:

class  Solution  {   公众:   ,,,bool  isSameTree (TreeNode *, p, TreeNode *, q), {   ,,,,,,,stackc++实现判断相同树的功能