编写一些高效率的函数,只使用指向二叉树,编写算法判定给定的二叉树是否为完全二叉树
题目一
解法
/** *二叉树节点的定义。*公共类TreeNode { * int val * TreeNode left * TreeNode right * TreeNode(){ } * TreeNode(int val){ this。val=val} * TreeNode(int val,TreeNode left,TreeNode right){ * this。val=val* this . left=left * this . right=right * } * } */class解决方案{ int ansint prepublic int get minimum difference(TreeNode root){ ans=Integer .MAX _ value pre=-1;方法(根);返回ans}公共空间方法(TreeNode root){ if(root==null)return;方法(根。左);if(pre==-1){ pre=root。val}else{ ans=Math.min(ans,root。val-pre);pre=root.val}方法(根。对);}}
题目二
解法
/** *二叉树节点的定义。*公共类TreeNode { * int val * TreeNode left * TreeNode right * TreeNode(){ } * TreeNode(int val){ this。val=val} * TreeNode(int val,TreeNode left,TreeNode right){ * this。val=val* this . left=left * this . right=right * } * } */class解{ int ans=0;public int find tilt(TreeNode root){ method(root);返回ans}公共int方法(TreeNode root){ if(root==null)返回0;int l=方法(根。左);int r=方法(根。对);ans=数学。ABS(左-右);返回l r root.val}}
题目三
解法
/** *二叉树节点的定义。*公共类TreeNode { * int val * TreeNode left * TreeNode right * TreeNode(){ } * TreeNode(int val){ this。val=val} * TreeNode(int val,TreeNode left,TreeNode right){ * this。val=val* this . left=left * this . right=right * } * } */class Solution { public boolean isSubtree(TreeNode root,TreeNode subRoot){ return DFS(root,subRoot);} public boolean dfs(TreeNode root,TreeNode subRoot){ if(root==null)返回falsereturn cheack(root,subRoot)dfs(root.left,subRoot)dfs(root.right,subRoot);} public boolean cheack(TreeNode root,TreeNode subRoot){ if(root==nullsubRoot==null)返回true if(root==null subRoot==null root。瓦尔。=subRoot.val)返回falsereturn cheack(root.left,subRoot.left)cheack(root.right,subRoot。对);}}
题目四
解法
/** *二叉树节点的定义。*公共类TreeNode { * int val * TreeNode left * TreeNode right * TreeNode(){ } * TreeNode(int val){ this。val=val} * TreeNode(int val,TreeNode left,TreeNode right){ * this。val=val* this . left=left * this . right=right * } * } */class Solution { public boolean issame tree(TreeNode p,TreeNode q) { if(p==nullq==null)返回trueif(p==nullq==nullq.val!=参数值)返回错误的返回isSameTree(p.left,q.left)isSameTree(p.right,q . right);}}到此这篇关于剑指提供之爪哇算法习题精讲二叉树专项解析的文章就介绍到这了,更多相关爪哇二叉树内容请搜索盛行信息技术以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行它!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。