"Symmetric Tree" and "Remove Element"

原创 2016年06月02日 10:14:50

Symmetric Tree:

//一开始用了中序遍历树,检查输出数组是否对称的方法,上传代码后juage错误。
class Solution {
public:
	vector<int> temp;
	bool isSymmetric(TreeNode* root) {
		if (root == NULL)
			return true;
		middle_order(root);
		auto _1_it = temp.begin();
		auto _2_it = temp.end() - 1;

		for (; _2_it > _1_it; _1_it++, _2_it--)
		{
			if (*_1_it != *_2_it)
				return false;
		}
		return true;
	}
	void middle_order(TreeNode* root)
	{
		if (root != NULL)
		{
			middle_order(root->left);
			temp.push_back(root->val);
			middle_order(root->right);
		}
	}
};
中序遍历得到的数组如果对称,树也可能不是镜像的,例如:


所以只能用递归判断的方法了。

class Solution {
public:
	bool isSymmetric(TreeNode* root)
	{

		if (root == NULL) return true;

		return ifSymmetric(root->left, root->right);
	}

	bool ifSymmetric(TreeNode* tree1, TreeNode* tree2)
	{
		if (tree1 == NULL && tree2 == NULL)
			return true;
		if (tree1 == NULL || tree2 == NULL)
			return false;

		if (tree1->val != tree2->val)
			return false;
		else
			return (ifSymmetric(tree1->left, tree2->right) && ifSymmetric(tree1->right, tree2->left));
	}
};

Remove Element:

迭代器遍历vector的过程中使用了修改vector的方法(比如vector.erase())就会报错,以前一直以为容器不支持在遍历的同时修改元素,这次看到一份代码,用了一次if else就解决了这个问题,真是学到了。

class Solution {
public:
	int removeElement(vector<int>& nums, int val) {

		for (auto it = nums.begin(); it != nums.end();)
		{
			if (*it == val)
				it = nums.erase(it);
			else
				it++;
		}
		return nums.size();
	}
};


Leetcode Symmetric Tree 递归和非递归解法

和same tree题目差不多一样的解法。 1 recursively 递归法: 2 iteratively 非递归: 使用先序遍历,原来树的先序遍历的非递归写法也不简单。...
  • kenden23
  • kenden23
  • 2014年02月16日 01:11
  • 14319

Leetcode-Symmetric Tree——判断二叉树是否对称

题目 Symmetric Tree  Total Accepted: 12814 Total Submissions: 40358My Submissions Given a bina...
  • disappearedgod
  • disappearedgod
  • 2014年04月20日 01:00
  • 2060

【LeetCode-面试算法经典-Java实现】【101-Symmetric Tree(对称树)】

【101-Symmetric Tree(对称树)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Given a binary tree, check whether it...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月07日 07:29
  • 3686

数据结构和算法------BinarySearchTree的实现

public class BinarySearchTree
  • sinat_33661267
  • sinat_33661267
  • 2016年11月18日 17:41
  • 483

基于vue.js 2.0,不使用webpack的nodejs服务,只在浏览器上单独使用在Element UI的Tree树形控件

Vue.js(读音 /vjuː/,类似于 view) 是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,它不仅易于上手,还...
  • l741210724
  • l741210724
  • 2017年04月13日 19:17
  • 10997

Remove Element的两种解法

Given an array and a value, remove all instances of that value in place and return the new length. ...
  • u011487593
  • u011487593
  • 2015年05月12日 20:51
  • 738

EasyUI tree菜单添加、删除、保存

效果图: html代码: /easyui/themes/default/easyui.css"> /easyui/themes/icon.css"> /ea...
  • shi_longyan
  • shi_longyan
  • 2015年10月23日 15:21
  • 3542

ElementTree排序问题

http://stackoverflow.com/questions/14257978/elementtree-setting-attribute-order Apply monkey patch a...
  • zanget
  • zanget
  • 2016年06月22日 22:41
  • 263

Symmetric Tree(中心对称树)

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For ...
  • cow__sky
  • cow__sky
  • 2014年03月07日 21:37
  • 838

Symmetric Tree(对称树)

Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center).(给定一棵二...
  • ajiangfan
  • ajiangfan
  • 2016年11月09日 16:44
  • 124
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:"Symmetric Tree" and "Remove Element"
举报原因:
原因补充:

(最多只允许输入30个字)