数据结构——二叉树

一、树的概念

在这里插入图片描述
节点的度: 一个节点含有的子树的个数称为该节点的度; 如上图:A的为6
树的度: 一棵树中,最大的节点的度称为树的度; 如上图:树的度为6
叶子节点: 度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点
父节点: 若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点
子节点: 一个节点含有的子树的根节点称为该节点的子节点; 如上图:B是A的孩子节点
根结点: 一棵树中,没有双亲结点的结点;如上图:A
节点的层次: 从根开始定义起,根为第1层,根的子节点为第2层,以此类推;
树的高度或深度: 树中节点的最大层次; 如上图:树的高度为4

判断一个结构是否是树结构:
如果一个结构是树结构,那么他的子树是不相交的,且除了根节点外,每个结点有且仅有一个父节点,一颗N个节点的树有N-1条边。

二、二叉树

特点: 每个结点最多有两棵子树,即二叉树不存在度大于2的结点,二叉树的子树有左右之分,其子树的次序不能颠倒。

二叉树的遍历
1.NLR:前序遍历(Preorder Traversal 亦称先序遍历)——访问根结点的操作发生在遍历其左右子树之前。
递归写法
public void preOrderTraversal(Node root){
   
        if (root == null){
   
            return ;
        }
        System.out.print(root.val);
        preOrderTraversal(root.left);
        preOrderTraversal(root.right);
    }
非递归写法:
public void preOrderTraversal(Node root){
   
		Stack<Node> stack = new LinkedList<>();
		TreeNode cur = root;
		while(!Stack.isEmpty() || cur!=null){
   
		 	while (cur != null){
   
			 	System.out.print(cur.val);
			 	stack.push(cur);
			 	cur = cur.left;
			}
		Node top = stack.pop();
		cur = top.right;
		}

}
2.LNR:中序遍历(Inorder Traversal)——访问根结点的操作发生在遍历其左右子树之中(间)。
public void inOrderTraversal(Node root){
   
        if(root == null){
   
            return;
        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值