首页 > 编程知识 正文

数据结构二叉树算法,数据结构遍历二叉树算法的实现

时间:2023-05-05 02:39:46 阅读:166792 作者:3979

用递归算法计算求二叉树深度的二叉树深度,一般按后面的顺序扫描。 使用递归算法,首先计算左边部分树的深度,然后计算右边部分树的深度,最后大的加1就是二叉树的深度

struct TreeNode{int data; TreeNode* left=nullptr; TreeNode* right=nullptr; (; inttreedepth(treenode*root ) if (! root}{return0; } int left _ height=tree depth (root-left ); int right _ height=tree depth (root-right ); max=left_height right_height? left_height : right_height; 返回最大1; }采用非递归算法求解二叉树深度的方式定义一个结构体,保存节点信息及其深度,利用DFS思想,记录沿左子树扫描过程中通过节点的右节点,便于追溯

struct TreeNode{int data; TreeNode* left=nullptr; TreeNode* right=nullptr; (; intgettreeheight (const treenode * root ) structinfo ) consttreenode*nodeinfo; int level; (; dequeInfo dq; int level=-1; int TreeHeight=-1; while (1(1) while ) root ) { level; 根权限{Info info; info.nodeInfo=root-right; info.level=level; dq.push_back(info; }root=root-left; }treeheight=max(treeheight,level ); if(dq.empty ) ) ) ) {break; }const Info info=dq.back (; root=info.nodeInfo; level=info.level; dq.pop_back (; }return TreeHeight; )方式二修正方式一、方式一中使用的辅助堆栈(两端排队)的大小达到的最大值减去1就是二叉树的深度。 因此,将要素放入二次堆栈后,或者访问节点数据时,只要记录二次堆栈的堆栈大小达到的最大值即可

struct TreeNode{int data; TreeNode* left=nullptr; TreeNode* right=nullptr; (; intgettreeheight (const treenode * root ) {dequeconst TreeNode* dq; int TreeHeight=-1; wile(1) {for ); 路线!=nullptr; 根=根-左(dq.push _ back ) )根; }treeheight=max(treeheight,dq.size((-1 ); while(1) if (dq.empty ) ) {return TreeHeight; }const TreeNode* parent=dq.back (; const treenode * right=parent-right; 智能机器人!=right(root=right; 黑; }root=parent; dq.pop_back (; }}return TreeHeight; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。