数据结构上机作业(四),java面试一般多长时间

this.right = right;

}

}

// 二叉链式存储结构下的二叉树

public class BiTree {

// 树的根节点

private BiTreeNode root;

// 构造方法

public BiTree(){

this.root = null;

}

public BiTree(BiTreeNode root) {

this.root = root;

}

}

2、通过递归的方式实现二叉树的前、中、后序遍历算法,并对算法及思想简单应用,解决二叉树中的其它应用和实际问题中的应用。

/**

  • 先序遍历二叉树的递归算法

  • @param T

*/

public void preRootTraverse(BiTreeNode T){

if (T != null){

// 先访问根节点

System.out.println(T.data);

// 再访问左子节点

postRootTraverse(T.left);

// 再访问右子节点

postRootTraverse(T.right);

}

}

/**

  • 中序遍历二叉树的递归算法

  • @param T

*/

public void inRootTraverse(BiTreeNode T){

if (T != null){

// 先访问左子节点

inRootTraverse(T.left);

// 再访问根节点

System.out.println(T.data);

// 在访问右子节点

inRootTraverse(T.right);

}

}

/**

  • 后序遍历二叉树的递归算法

  • @param T

*/

public void postRootTraverse(BiTreeNode T){

if (T != null){

// 先访问左子树

postRootTraverse(T.left);

// 再访问右子树

postRootTraverse(T.right);

// 再访问根节点

System.out.println(T.data);

}

}

3、求二叉树的深度

/**

  • 求二叉树的深度 (递归)

  • @param T

  • @return

*/

public int getDepth(BiTreeNode T){

if(T != null){

int leftDepth = getDepth(T.left);

int rightDepth = getDepth(T.right);

return 1 + (leftDepth > rightDepth ? leftDepth:rightDepth);

}

return 0;

}

4、编写递归算法,计算二叉树中叶子结点的数目。

/**

  • 计算节点个数(递归)

  • @param T

  • @return

*/

public int countNode(BiTreeNode T){

// 采用先序遍历的方式对二叉树进行遍历,并计算其节点个数

int count = 0;

if (T != null){

count++;

count += countNode(T.left);

count += countNode(T.right);

}

return count;

}

5*、通过非递归遍历的的方式实现二叉树的前、中、后序遍历算法和层次遍历算法。

/**

  • 先序遍历二叉树的非递归算法

*/

public void preRootTraverse(){

BiTreeNode T = root;

if (T != null){

// 构造一个栈

Stack stack = new Stack();

// 根节点入栈

stack.push(T);

while (!stack.isEmpty()){

// 移除栈顶节点,并访问其值

T = (BiTreeNode) stack.pop();

System.out.println(T.data);

while(T != null){

// 访问左子结点

if (T.left != null){

System.out.println(T.left.data);

}

// 右子节点非空入栈

if (T.right != null){

stack.push(T.right);

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

总结

其他的内容都可以按照路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

部分内容截图:

路线图里面整理出来的知识点逐一去熟悉,学习,消化,不建议你去看书学习,最好是多看一些视频,把不懂地方反复看,学习了一节视频内容第二天一定要去复习,并总结成思维导图,形成树状知识网络结构,方便日后复习。

这里还有一份很不错的《Java基础核心总结笔记》,特意跟大家分享出来

目录:

[外链图片转存中…(img-7kr5DYUa-1710758750550)]

部分内容截图:

[外链图片转存中…(img-slnL8s3z-1710758750550)]

[外链图片转存中…(img-MenJRhe2-1710758750551)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值