【LeetCode筆記】判斷一棵樹是否為映象
最初思路:
1.求樹的中序遍歷,存入vector;
2.判斷vector是否為為映象;
錯誤原因:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ class Solution { public: vector<int> v; void get(int a){ v.push_back(a); } void LDR(TreeNode *root){ if (root==NULL) return; else{ LDR(root->left); get(root->val); LDR(root->right); } return; } bool reverse(vector<int> n,int start,int end,int length){ if (length==0||length==1) return true; if (n.at(start)!=n.at(end)) return false; else{ return reverse(n,start+1,end-1,length-2); } } bool isSymmetric(TreeNode* root) { LDR(root); return reverse(v,0,v.size()-1,v.size()); } };
中序遍歷並不能唯一確定一棵樹啊。。。
正解:
1.判斷結構是否對稱 要麼沒有左右子樹,要麼有左子樹就要有右子樹
2.判斷值是否對稱:除根節點外,左子樹的左邊和右子樹的右邊值要相同
class Solution { public: bool compare(TreeNode* root1,TreeNode* root2){ if(root1==NULL&&root2==NULL) return true; else if((root1==NULL&&root2!=NULL)||(root1!=NULL&&root2==NULL)) return false; else{ if(root1->val!=root2->val) return false; else return compare(root1->left,root2->right)&&compare(root1->right,root2->left); } } bool isSymmetric(TreeNode* root) { if (root==NULL) return true; if (root->left==NULL&&root->right==NULL) return true; if((root->left==NULL&&root->right!=NULL)||(root->left!=NULL&&root->right==NULL)) return false; return compare(root->left,root->right); } };
相關推薦
【LeetCode筆記】判斷一棵樹是否為映象
最初思路: 1.求樹的中序遍歷,存入vector; 2.判斷vector是否為為映象; /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNo
【資料結構】判斷一棵樹是否為完全二叉樹
完全二叉樹(Complete Binary Tree) 若設二叉樹的深度為h,除第h層外,其它各層(1~h-1)的結點數都達到最大個數,第h層所有的結點都連續集中在最左邊,這就是完全二叉樹。 完全二叉樹是由滿二叉樹而引出來的。對於深度為K的,有n個結點的二叉樹,當且僅當其每
【LeetCode】Symmetric Tree 判斷一棵樹是否是映象的
<span style="font-size:18px;"><span style="font-size:18px;">/**LeetCode Symmetric Tree 對稱的樹 * 思路:判斷一棵樹是否對稱,1.有左子樹就要有右子樹 *
leetcode 110-判斷一棵樹是否為平衡二叉樹
平衡二叉樹的定義: 空樹或者左右子樹的高度差不超過1且左右子樹也是平衡二叉樹。 需要用到計算深度的方法: public int depth(TreeNode root) { if (r
Is It A Red-Black Tree?(判斷一棵樹是否為紅黑二叉樹)
以前沒接觸過這種樹,看了別人的程式碼,加上了詳細的註釋。 思路全在註釋中。 我將測試樣例放上,以便複製。 3 9 7 -2 1 5 -4 -11 8 14 -15 9 11 -2 1 -7 5 -4 8 14 -15 8 10 -7 5 -6 8 15 -11 17
如何判斷一棵樹是否為另一棵樹的子結構
前兩天有個 朋友問到了這個這個問題,我很感興趣。 其實策略很簡單,用個佇列儲存母樹以層次遍歷的形式儲存可能的子樹的根節點, 然後對這個佇列進行遍歷,以子樹為主與當前要判斷的根節點經行比對,若遍歷完整個佇列,仍未找到,則該子樹不是所要判斷的母樹的子結構。 PS:其實也不用儲
劍指Offer系列-面試題39-2:判斷一棵樹是否為平衡二叉樹
題目:判斷一棵樹是否為平衡二叉樹 思路:根據上一題的二叉樹的深度,在遞迴過程中加上識別符號,遞迴到當前節點,判斷當前子樹是不是一個平衡二叉樹,如果不是,就把識別符號置為false,返回識別符號即可。
判斷一棵樹是否為二叉排序樹
概要 由於二叉排序樹的中序遍歷時得到的一定是個一個升序序列,我們可以根據這一性質,利用中序遍歷進行判定。 演算法 1)設定全域性變數max為無窮小。 2)若樹為空,則返回true。 3
判斷一棵樹是否為二叉搜尋樹
演算法:使用BFS,在每次入隊前判斷是否滿足BST條件。程式碼:#include <iostream>#include <queue>using namespace std;st
leetcode101. Symmetric Tree判斷一棵樹是否是映象二叉樹
思路:轉化為求兩個二叉樹是否是映象二叉樹class Solution { //判斷一顆二叉樹是否是映象的 public boolean isSymmetric(TreeNode root) { if(root==null){
產生樹的映象,判斷一棵樹是否為對稱二叉樹
程式碼均為Python: 1. 產生樹的映象: class Solution: def Mirror(self,root): if(root): roo
二叉樹映象(遞迴和非遞迴)+ 判斷一棵二叉樹是否是平衡二叉樹+ 判斷一棵樹是否為完全二叉樹
二叉樹映象(遞迴和非遞迴): // 求二叉樹的映象:非遞迴 void GetBinaryMirror_Nor() { if(_pRoot == NULL) return; stack<Node*> s; s.push(_pRoot);
LeetCode:572. Subtree of Another Tree(判斷一棵樹是不是另外一棵樹的子樹)
Given two non-empty binary trees s and t, check whether tree t has exactly the same structure and node values with a subtree
【leetcode筆記】:重建二叉樹
【重建二叉樹】 0.題目 http://t.cn/RA636CF 1.瞭解什麼是二叉樹的前序、中序、後序三種遍歷 關於二叉樹的前序、中序、後序三種遍歷:https://blog.csdn.net/qq_33243189/article/details/80222629
【LeetCode筆記】Binary Tree Level Order Traversal II 二叉樹按層遍歷,反向輸出
題目: Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from
【LeetCode題目記錄-11】判斷二叉樹是否是映象的(對稱的)
Symmetric Tree Given a binary tree, check whether it is a mirror of itself (ie, symmetric around it
【LeetCode筆記】Convert Sorted Array to Binary Search Tree 通過有序數列建立二叉搜尋樹
題目: Given an array where elements are sorted in ascending order, convert it to a height balanced BST. 思路:每一次從有序數列的中間開始提一個出來作為當前的根節點。然後其左邊
【LeetCode筆記】Balanced Binary Tree 高度平衡二叉樹
題目: Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tr
【二叉樹】判斷兩棵樹是否相同
題目連結:https://leetcode.com/problems/same-tree/#/description /** * Definition for a binary tree node.
leetcode----- Validate Binary Search Tree(判斷一棵樹是否是二叉搜尋樹)
1、題目描述 給定一棵二叉樹,判斷這棵樹是否是二叉搜尋樹。 二叉搜尋樹的定義如下: 二叉搜尋樹(Binary Search Tree),又稱二叉排序樹,它或者是一顆空樹,或者具有如下性質的樹: 若它的左子樹不為空,則左子樹上所有節點的值都小於根節點的值 若它的右子樹