打印二叉树中一个节点的所有祖先节点
来源:互联网 发布:如何恢复数据 编辑:程序博客网 时间:2024/05/23 10:50
在二叉树中找到一个节点的祖先节点是我们常用的一个算法,今天我们就来介绍两种不同的方式,一种代码简单但是效率较低,用到了递归,另一种代码复杂但是效率较高,利用非递归的后序遍历
递归方式的代码如下
public boolean ancestor(Node node,int x){ if (node==null){ return false; } else{ if(node.getData()==x) return true; else{ boolean b1=ancestor(node.left,x); boolean b2=ancestor(node.right,x); if(b1||b2) System.out.print(node.getData()+" "); return b1||b2; } } }
/** * 给出根节点和一个节点的值,找出这个节点的所有祖先节点并且将他们打印出来(非递归方式) */ public void ancestor2(Node node,int x){ Node[] qu=new Node[255]; int flag=0; int k=0; Node pre=null; Node p=node; if(p!=null){ qu[k++]=p; p=p.getLeft(); while(k>0){ while(p!=null){ qu[k++]=p; p=p.left; } pre=null; flag=1; while(flag==1&&k>0){ p=qu[k-1]; if(p.right==pre){ k--; if(p.data==x){ for(int i=0;i<=k;i++){ System.out.print(qu[i].getData()+" "); } } pre=p; } else{ p=p.right; flag=0; } } } } }
0 0
- 打印二叉树中一个节点的所有祖先节点
- 找出二叉树中某个节点的所有祖先节点
- 找出二叉树中某个节点的所有祖先节点
- 获得二叉树中两个节点的所有公共祖先
- 打印二叉树中某个节点的所有父节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树中两个节点的最近公共祖先节点
- 二叉树求两个结点的父节点及一个结点的所有祖先结点
- 求两个节点的最近公共祖先多种解法&&判断一个节点是否在二叉树中
- 求二叉树中2个节点的最近祖先
- 寻找二叉树中两个节点的最近祖先
- 二叉树中查找两个节点的最低公共祖先
- 求二叉树中两个节点的最低公共祖先
- 二叉树中两个节点的最低公共祖先
- 二叉树中两个节点的公共祖先
- 求二叉树中两个节点的最近公共祖先
- Hdu 5323 2015多校对抗赛三
- HDU 1049 Climbing Worm
- Android中BitmapFactory.Options详解
- POJ2255 Tree Recovery 二叉树遍历
- client 提交post 到 django出现403错误
- 打印二叉树中一个节点的所有祖先节点
- PAT (Advanced Level) 1097. Deduplication on a Linked List (25) 链表去重
- Notice: Undefined variable解决办法
- iOS开发UI篇—transframe属性(形变)
- 可预见的未来-智能摄像头
- install openvswitch 2.3.2 on ubuntu 14.04
- GCJ 2008 Round 1A A 排序贪心
- iOS的SQLite的使用
- Shiro学习(8)拦截器机制