Same Tree (JAVA实现)
来源:互联网 发布:linux更改文件权限777 编辑:程序博客网 时间:2024/06/05 20:59
原题再现:
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.
翻译:给定两个二叉树,判断是否相等,当结构相同且树节点有相同值。算法一:
递归:
<span style="font-size:18px;">public boolean isSameTree(TreeNode p, TreeNode q) { if(p == null && q == null) return true; if(p == null || q == null || p.val != q.val) return false; return isSameTree(p.left, q.left) && isSameTree(p.right, q.right); }</span>
深层次来说,一句话也可以将其实现:
public boolean isSameTree(TreeNode p, TreeNode q) { return (p == null || q == null) ? p == q : p.val == q.val && isSameTree(p.left, q.left) && isSameTree(p.right, q.right);}
算法二:
利用栈的思想:
(1)只利用一个栈就可以实现:
<span style="font-size:18px;">public boolean isSameTree(TreeNode p, TreeNode q) { Stack<TreeNode> stack = new Stack<TreeNode>(); stack.push(q); stack.push(p); while(!stack.isEmpty()){ TreeNode pn = stack.pop(); TreeNode qn = stack.pop(); if(pn == null && qn == null){ continue; }else if(pn == null || qn == null){ return false; }else if(pn.val != qn.val){ return false; } stack.push(pn.right); stack.push(qn.right); stack.push(pn.left); stack.push(qn.left); } return true; }</span>(2)利用双栈也可以实现:
<span style="font-size:18px;">public boolean isSameTree(TreeNode p, TreeNode q) { Stack<TreeNode> stack_p = new Stack <> (); Stack<TreeNode> stack_q = new Stack <> (); if (p != null) stack_p.push( p ) ; if (q != null) stack_q.push( q ) ; while (!stack_p.isEmpty() && !stack_q.isEmpty()) { TreeNode pn = stack_p.pop() ; TreeNode qn = stack_q.pop() ; if (pn.val != qn.val) return false ; if (pn.right != null) stack_p.push(pn.right) ; if (qn.right != null) stack_q.push(qn.right) ; if (stack_p.size() != stack_q.size()) return false ; if (pn.left != null) stack_p.push(pn.left) ; if (qn.left != null) stack_q.push(qn.left) ; if (stack_p.size() != stack_q.size()) return false ; } return stack_p.size() == stack_q.size() ; }</span>
0 0
- Same Tree (JAVA实现)
- [Leetcode] Same Tree (Java)
- LeetCode-Same Tree(java)
- Same Tree (Java)
- Leetcode Same Tree Java
- [LeetCode][Java] Same Tree
- LeetCode|Same Tree-java
- (java)leetcode Same Tree
- leetcode:Same Tree 【Java】
- leetcode100 Same Tree java
- 100. Same Tree(Java)
- same-tree Java code
- leetcode:same tree的 java实现 (两行)
- LeetCode 100 -Same Tree ( JAVA )
- leetcode-java-100. Same Tree
- [LeetCode-100]Same Tree(java)
- 【leetcode】100. Same Tree【java】
- LeetCode-100. Same Tree (Java)
- Java几种线程池类型介绍及使用
- jsp getRows()与 getRowCount()
- Django笔记 通过URL传递参数的4种方法 + 补充
- BP神经网络预测
- Linux ftp 远程文件传输
- Same Tree (JAVA实现)
- HDU1159poj1458Common Subsequence最长公共子序列
- Markdown 语法说明 (简体中文版)
- Parajumpers Jacka read to born for you at
- scrollerView与侧滑菜单滑动冲突的问题(自定义view结合事件传递机制实例分析)
- Oracle 常用函数实例总结
- JFreeChart的使用
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- 对比 Matlab 和 Octave 的运行速度