当前位置: 首页 > news >正文

简单的网站管理系统网站搭建教学

简单的网站管理系统,网站搭建教学,婚礼策划网站模板,兰州网站seo收费标准文章目录 判断是否是完全二叉树找出p和q的最近的公共祖先非递归实现前序遍历非递归实现中序遍历非递归实现后序遍历 判断是否是完全二叉树 boolean isCompleteTree(TreeNode root){if (root null){return true;}//创建队列QueueTreeNode queue new LinkedList null){return true;}//创建队列QueueTreeNode queue new LinkedList();//把根放进队列里queue.offer(root);while (!queue.isEmpty()){//把出队列的放进cur里TreeNode cur queue.poll();//当cur不等于空时把cur的左子树和右子树放进队列if (cur ! null){queue.offer(cur.left);queue.offer(cur.right);}else{//如果cur放进了null说明要跳出队列进入判断环节break;}}while(!queue.isEmpty()){TreeNode tmp queue.peek();//瞄一眼队列的数if (tmp null){queue.poll();}else{//遇到不为空的说明不是完全二叉树return false;}}//来到这里说明tmp全部是空的,是完全二叉树return true;}找出p和q的最近的公共祖先 1.root节点是p或q其中的一个那么root就是最近的公共祖先 2.p和q分别在root的两侧那么root是最近的公共祖先 3.p和q在root的同一侧 原理root还是在遍历这棵树遇到p或q就返回。 public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {if (root null) return null;if (root p || root q) {return root;}TreeNode leftTree lowestCommonAncestor(root.left, p, q);TreeNode rightTree lowestCommonAncestor(root.left, p, q);if (leftTree ! null rightTree ! null) {return root;} else if (leftTree ! null) {return leftTree;} else {return rightTree;}}还有第二种方法 大概意思就是找p那条路径和q那条路径出现的节点然后放进两个栈里保证两个栈的数相同多的去掉然后栈中相同的元素就是他们最近的公共祖先。 public class BinaryTree {static class TreeNode{public char val;public TreeNode left;public TreeNode right;public TreeNode(char val) {this.val val;}}public TreeNode creatTree(){TreeNode A new TreeNode(A);TreeNode B new TreeNode(B);TreeNode C new TreeNode(C);TreeNode D new TreeNode(D);TreeNode E new TreeNode(E);TreeNode F new TreeNode(F);TreeNode G new TreeNode(G);TreeNode H new TreeNode(H);A.left B;A.right C;B.left D;B.right E;C.left F;C.right G;E.right H;return A;}public TreeNode lowestCommonAncestor2(TreeNode root,TreeNode p,TreeNode q){if(root null) return null;//创建两个栈StackTreeNode stackP new Stack();StackTreeNode stackQ new Stack();//两条路径getPath(root,p,stackP);getPath(root,q,stackQ);//大小int sizeP stackP.size();int sizeQ stackP.size();if (sizeP sizeQ){int size sizeP - sizeQ;while (size ! 0){stackP.pop();size--;}}else {int size sizeQ - sizeP;while (size ! 0){stackQ.pop();size--;}}//两个栈元素一样多while(!stackP.isEmpty() !stackQ.isEmpty()){if (stackP.peek() stackQ.peek()){return stackP.peek() ;}else{stackP.pop();stackQ.pop();}}return null;}private boolean getPath(TreeNode root, TreeNode node, StackTreeNode stack){if (root null || node null){return false;}stack.push(root);if (root node){return true;}boolean flg1 getPath(root.left, node, stack);if(flg1){return true;}boolean flg2 getPath(root.right, node, stack);if(flg2){return true;}stack.pop();return false;} }非递归实现前序遍历 //递归实现前序遍历void preOrder(TreeNode root){//根左右if(root null){return;}System.out.print(root.val );preOrder(root.left);preOrder(root.right);} //非递归实现前序遍历void preOrderNor(TreeNode root) {if (root null) {return;}StackTreeNode stack new Stack();TreeNode cur root;while (cur ! null || !stack.isEmpty()) {while (cur ! null) {stack.push(cur);System.out.print(cur.val );cur cur.left;}TreeNode top stack.pop();cur top.right;//1.为空返回不为空创建栈让curroot;//当cur!null时把cur放进栈里并打印cur.val再让curroot.left。//当curnull时让top栈顶元素,然后让curtop.right}}非递归实现中序遍历 //中序遍历void inOrder(TreeNode root){//左根右if(root null){return;}inOrder(root.left);System.out.print(root.val );inOrder(root.right);}//非递归中序遍历void inorderNor(TreeNode root){if (root null){return;}StackTreeNode stack new Stack();TreeNode cur root;while(cur ! null || !stack.isEmpty()){while(cur ! null) {stack.push(cur);cur cur.left;}TreeNode top stack.pop();System.out.print(top.val );cur top.right;}//不为空创建栈让curroot,把cur放进栈里然后遍历cur的左边。//直到cur遇到空说明cur的左边遍历完了//让top栈顶元素并打印top的值让curtop.right。}非递归实现后序遍历 //后序遍历void postOrder(TreeNode root){//左右根if(root null){return;}postOrder(root.left);postOrder(root.right);System.out.print(root.val );}//非递归后序遍历void postOrderNor(TreeNode root){if (root null){return;}StackTreeNode stack new Stack();TreeNode cur root;TreeNode prev null;while(cur ! null || !stack.isEmpty()){while(cur ! null) {stack.push(cur);cur cur.left;}}TreeNode top stack.peek();if (top.right null || top.right prev){System.out.print(top.val );stack.pop();prev top;}else{cur top.right;}//先创建栈让currootcur不等于空或者栈不为空当cur不等于空时让cur入栈,然后让curcur.left//直到当cur等于空时,定义prevnull让top瞄一眼栈顶元素如果等于空或者top.rightprev进入循环// 循环内打印top.val并且出栈然后让prevtop否则让curcur.right}
http://www.pierceye.com/news/129003/

相关文章:

  • 移动网站和定制网站个体户 做网站
  • 网站建设的计划书网站源码下载 用户注册
  • 培训网站项目ppt怎么做抖音服务商
  • 做一个网站需要多少钱大概费用wordpress 2017
  • 惠州网页模板建站天河建设网站外包
  • html变Wordpress网络营销优化培训
  • 上海网站建设hxwlkj新浪网站源代码
  • 网站如何做美工想做代理商去哪找项目
  • 佛山市品牌网站建设多少钱印度网站开发成本
  • 群晖 nas 做网站软件开发视频网站
  • 建设银行云南分行招聘网站wordpress 教程
  • 杭州知名的网站制作策略创建一个购物网站需要什么
  • 新乡网站seo优化vs做的网站怎么让局域网的看到
  • 做静态网站怎样让图片自己切换重庆互联网公司排名
  • 微网站需要什么郑州哪家专业做淘宝网站
  • 郑州机械网站制作seo专业优化公司
  • 专注苏州网站优化长沙有哪些知名网站
  • 成品网站货源1688免费推荐建设银行科技中心网站
  • 城乡建设部统计信息网站大学生创新创业大赛项目计划书
  • 河南省水利建设厅网站清溪镇网站仿做
  • 深圳建设企业网站wordpress安装对搜索引擎
  • 做药物分析网站做网站花钱吗
  • 字体图标制作网站恒一信息深圳网站建设公司1
  • 制作一个自己的网站小白node怎么做网站
  • 手机搭建网站工具教育机构加盟
  • 建设网站的服务端口教育培训类网站建设
  • 济南网站建设 泉诺如何防范钓鱼网站
  • 沈阳网站推广公司西安网站设计师
  • 网站建设费用计入什么二级科目企业门户网站建设的必要性
  • 宁夏水利厅建设管理处网站大连网站制作431