7.二叉树的比较代码实现(JavaScript版)
2020-06-25 09:30
155 查看
严格比较二叉树,左子树和右子树严格相等:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> function Node(value){ this.value = value; this.left = null; this.right = null; } var nodeA = new Node("a"); var nodeB = new Node("b"); var nodeC = new Node("c"); var nodeD = new Node("d"); var nodeE = new Node("e"); var nodeF = new Node("f"); var nodeG = new Node("g"); nodeA.left = nodeB; nodeA.right = nodeC; nodeB.left = nodeD; nodeB.right = nodeE; nodeC.left = nodeF; nodeC.right = nodeG; var a = new Node("a"); var b = new Node("b"); var c = new Node("c"); var d = new Node("d"); var e = new Node("e"); var f = new Node("f"); var g = new Node("g"); a.left = b; a.right = c; b.left = d; b.right = e; c.left = f; c.right = g; //严格比较二叉树,左子树和右子树必须完全一样,不可互换 function compareTree(root1, root2){ if(root1 == root2) return true;//两棵树是同一棵树 if((root1 == null && root2 != null) || (root1 != null && root2 == null)) return false;//两棵树有一棵为null,另一棵不是null if(root1.value != root2.value) return false;//节点的值不同 var leftBoolean = compareTree(root1.left, root2.left);//比较左子树 var rightBoolean = compareTree(root1.right, root2.right);//比较右子树 return leftBoolean && rightBoolean;//左子树和右子树必须都一样 } console.log(compareTree(nodeA, a)); </script> </body> </html>严格比较二叉树
非严格比较二叉树,左子树和右子树可以互换:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <script> function Node(value){ this.value = value; this.left = null; this.right = null; } var nodeA = new Node("a"); var nodeB = new Node("b"); var nodeC = new Node("c"); var nodeD = new Node("d"); var nodeE = new Node("e"); var nodeF = new Node("f"); var nodeG = new Node("g"); nodeA.left = nodeB; nodeA.right = nodeC; nodeB.left = nodeD; nodeB.right = nodeE; nodeC.left = nodeF; nodeC.right = nodeG; var a = new Node("a"); var b = new Node("b"); var c = new Node("c"); var d = new Node("d"); var e = new Node("e"); var f = new Node("f"); var g = new Node("g"); a.right = b; a.left = c; b.left = d; b.right = e; c.left = f; c.right = g; //非严格比较二叉树,左子树和右子树可互换 function compareTree(root1, root2){ if(root1 == root2) return true;//两棵树是同一棵树 if((root1 == null && root2 != null) || (root1 != null && root2 == null)) return false;//两棵树有一棵为null,另一棵不是null if(root1.value != root2.value) return false;//节点的值不同 return (compareTree(root1.left, root2.left) && compareTree(root1.right, root2.right) || compareTree(root1.right, root2.left) && compareTree(root1.left, root2.right));//左子树和右子树可以互换 } console.log(compareTree(nodeA, a)); </script> </body> </html>非严格比较二叉树
相关文章推荐
- 数据结构之二叉树――链式存储结构(php代码实现)
- 获取当前时间的前后台实现代码比较java和js
- 求二叉树的深度代码实现
- 史上比较用心的纯代码实现 AutoLayout
- 浙大数据结构习题笔记:二叉树各种遍历完全代码实现
- 归并排序(代码实现比较难)
- 感知哈希算法:pHash算法实现图像相似度比较(附完整c++代码)
- Python实现比较两个文件夹中代码变化的方法
- Java、Scala、Go以相同方式实现快速排序代码量比较
- AjaxPanel自定义控件实现页面无刷新数据交互(做了个示例程序, 效果确实比较Cool, 用法非常简单! )(示例代码下载)
- 求二叉树中节点的最大距离的C程序实现代码
- 二叉树问题---二叉搜索树查找、插入与删除的代码实现
- 08 通过比较操作符实现代码优化-DirectX游戏开发初级教程
- 用Astar(A*)算法 实现的迷宫最短路。代码比较规范,可作为模板
- 二叉树的C++实现代码
- python算法与数据结构-二叉树的代码实现(46)
- 二叉树的各种遍历实现伪代码
- 二叉树 前序、中序、后序、层次遍历及非递归实现 查找、统计个数、比较、求深度的递归实现
- 二叉树的先序遍历,中序遍历,后序遍历,以及例题的代码实现
- C语言二叉树知识点讲解与实现代码